Martin Zielinski wrote:
Bruno Gomes Pessanha wrote:
I'm having the same problem... but with a 520 print queues samba server and
20.000 AD users.
I'm getting desperate! I did a lot of tuning changes..... but nothing helps!

Bruno

[...]

If i remember correctly, the original description of the problem has been, that the number of smbd proccess is growing until this breaks the whole system (correct me, if I'm wrong).

Actually it does not break the whole system. Only Samba is broken. All other services continue running on the server and work fine, but samba just hangs and connections that were already made stop working, and all new connections are denied. Please review bug #3636 that I submitted yesterday. If more information is needed I'll provide it, but for now I'm waiting for it to crash again to get an strace on one of the processes and more debug at level 10.
Thanks
Matt Lung

In your case the reason might be that clients leave *one* spoolss-pipe open, after they have opened (and closed) a connection to a printer. The deadtime parameter is not working, because of this one open connection.
BTW, this is diffrent to connections with admin rights.

To fix this, I add the following lines to smbd/conn.c:
---- start code
    for (conn=Connections;conn;conn=next) {
        next=conn->next;
        /* close dirptrs on connections that are idle */
        if ((t-conn->lastused) > DPTR_IDLE_TIMEOUT)
            dptr_idlecnum(conn);
+    /* force the closure, even if one spoolss is open */
+        if (conn->num_files_open == 1 && (t-conn->lastused)>=deadtime) {
+ for (plist = get_first_internal_pipe(); plist; + plist = get_next_internal_pipe(plist)) {
+                if (plist->name && !strcmp (plist->name, "spoolss")) {
+ DEBUG(2,("Client holds one spoolss connection. Deadtime reached. Closing last pipe\n"));
+                    pipe_close_conn (conn);
+                    break;
+                }
+            }
+        }
+
        if (conn->num_files_open > 0 ||
            (t-conn->lastused)<deadtime)
            allidle = False;
    }
---- end code

If the description meets your existing problem, this might help.
(There was an earlier discussion with Gerald Carter about this topic - this might be his code or merged with mine - I don't remember excactly)

Bye,
Martin

--
---
Bruno Gomes Pessanha
LPI Brasil



--
Matt Lung

Midwest Tool & Die, Corp.


--
To unsubscribe from this list go to the following URL and read the
instructions:  https://lists.samba.org/mailman/listinfo/samba

Reply via email to