I have a problem.

peruser does not seem to check if child is idle correctly. If i download a file and expiretimeout elapses it kills off child anyways, regardless of what it's doing. It's also true with php scripts.
Does anyone else see this?

Using RH rpm httpd-2.0.54.

Only difference i have from stock peruser patch on my development machine is this (patch I got from stefan, to sort out segfaults concerning connection getting closed by client before they could be handed over to child from multiplexer?):
Index: peruser.c
===================================================================
--- httpd-2.0.55/server/mpm/experimental/peruser/peruser.c (revision 27) +++ httpd-2.0.55-new/server/mpm/experimental/peruser/peruser.c (working copy)
@@ -931,12 +931,13 @@
current_conn = ap_run_create_connection(p, ap_server_conf, sock, conn_id,
                                            sbh, bucket_alloc);
    _DBG("Looking up the right vhost");
-    ap_update_vhost_given_ip(current_conn);
- _DBG("Base server is %s, name based vhosts %s", current_conn->base_server->server_hostname,
+    if (current_conn) {
+           ap_update_vhost_given_ip(current_conn);
+ _DBG("Base server is %s, name based vhosts %s", current_conn->base_server->server_hostname,
                   current_conn->vhost_lookup_data ? "on" : "off");
-
+    }

- if (!current_conn->vhost_lookup_data && CHILD_INFO_TABLE[my_child_num].type == CHILD_TYPE_MULTIPLEXER) { + if (current_conn && !current_conn->vhost_lookup_data && CHILD_INFO_TABLE[my_child_num].type == CHILD_TYPE_MULTIPLEXER) { _DBG("We are not using name based vhosts, we'll directly pass the socket.");

sconf = PERUSER_SERVER_CONF(current_conn->base_server->module_config);


I sat the ExpireTimeout to very low so i could test it easily. In my real server its 300.
My conf:

   ServerLimit 320
   MaxClients 320
   MinSpareProcessors 3
   MaxProcessors 100
   MaxRequestsPerChild 1000
   ExpireTimeout 10
   Multiplexer nobody nobody
   Multiplexer nobody nobody


<Virtualhost *>

   DocumentRoot    /home/web/default
   ServerName      default
   ErrorLog        /home/web/logs/default_error.log
   CustomLog       /home/web/logs/default_custm.log combined
   ServerEnvironment #2000 #2000

</Virtualhost>


I have production server with apache 2.2.2 with similar conf and it acts the same way, but since Gabriel uses 2.0 series then i rebuilt old apache on dev. machine to get it fixed and ask some thoughts.
_______________________________________________
Peruser mailing list
[email protected]
http://www.telana.com/mailman/listinfo/peruser

Reply via email to