Jup you were right!

user #5006
It says:
[EMAIL PROTECTED] httpd.p2]# tail -f error_log | grep "total_processors = \|idle_processors =" | grep uid=5006 [Tue Jan 30 16:13:55 2007] [warn] (peruser: pid=32618 uid=5006 child=120) child_main(): total_processors = 8, max_processors = 100 [Tue Jan 30 16:13:55 2007] [warn] (peruser: pid=32618 uid=5006 child=120) child_main(): idle_processors = 1, min_free_processors = 3 [Tue Jan 30 16:13:55 2007] [warn] (peruser: pid=32618 uid=5006 child=120) child_main(): total_processors = 8, max_processors = 100 [Tue Jan 30 16:13:55 2007] [warn] (peruser: pid=32618 uid=5006 child=120) child_main(): idle_processors = 1, min_free_processors = 3 [Tue Jan 30 16:13:55 2007] [warn] (peruser: pid=32618 uid=5006 child=120) child_main(): total_processors = 8, max_processors = 100 [Tue Jan 30 16:13:55 2007] [warn] (peruser: pid=32618 uid=5006 child=120) child_main(): idle_processors = 1, min_free_processors = 3 [Tue Jan 30 16:13:55 2007] [warn] (peruser: pid=32618 uid=5006 child=120) child_main(): total_processors = 8, max_processors = 100 [Tue Jan 30 16:13:55 2007] [warn] (peruser: pid=32618 uid=5006 child=120) child_main(): idle_processors = 1, min_free_processors = 3

my top (filter only user #5006):

top - 16:15:01 up 72 days, 20:24,  4 users,  load average: 4.46, 4.21, 3.69
Tasks: 522 total,   2 running, 520 sleeping,   0 stopped,   0 zombie
Cpu(s): 18.0% us, 24.8% sy, 14.6% ni, 23.8% id, 18.0% wa,  0.5% hi,  0.5% si
Mem:   2005680k total,  1949548k used,    56132k free,    46952k buffers
Swap:  3060348k total,   372816k used,  2687532k free,   861344k cached

 PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
32618 5006      34  19 36252  15m 4772 S  0.0  0.8   0:02.02 httpd.p2

How apache keeps track of them and how it get's out of sync?


Now....thing are really weird. I've restarted apache and apache comes up and total_processors is allready = 10 and idle = 3. If i made first requests to apache.

[Tue Jan 30 16:30:53 2007] [warn] (peruser: pid=17487 uid=5006 child=186) child_main(): total_processors = 10, max_processors = 100 [Tue Jan 30 16:30:53 2007] [warn] (peruser: pid=17487 uid=5006 child=186) child_main(): idle_processors = 3, min_free_processors = 3

top shows only 4 procs up'n running.

[EMAIL PROTECTED] ~]# top
top - 16:31:17 up 72 days, 20:40,  5 users,  load average: 2.16, 2.74, 3.32
Tasks: 579 total,   2 running, 577 sleeping,   0 stopped,   0 zombie
Cpu(s):  3.9% us,  2.0% sy,  6.3% ni, 79.0% id,  7.8% wa,  0.5% hi,  0.5% si
Mem:   2005680k total,  1953908k used,    51772k free,    70876k buffers
Swap:  3060348k total,   372744k used,  2687604k free,   908656k cached

 PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
17026 5006 34 19 32136 10m 1448 S 0.0 0.5 0:00.00 /usr/sbin/httpd.p2 -f /etc/httpd.p2/conf/httpd.conf 17034 5006 34 19 32136 9.8m 920 S 0.0 0.5 0:00.00 /usr/sbin/httpd.p2 -f /etc/httpd.p2/conf/httpd.conf 17487 5006 34 19 32136 10m 1456 S 0.0 0.5 0:00.00 /usr/sbin/httpd.p2 -f /etc/httpd.p2/conf/httpd.conf 18178 5006 34 19 32136 9.8m 920 S 0.0 0.5 0:00.00 /usr/sbin/httpd.p2 -f /etc/httpd.p2/conf/httpd.conf



Now remember a while ago ( SUBJECT: [peruser] Segmentation fault DATE: 06.08.2006) I had connections segfaulting. I got a patch from you that should close the broken connection without making apache to segfault. After the patch I got "Bad file descriptor: apr_socket_opt_set: (TCP_NODELAY)" error on apache log so I modified it to return instead of continue.

Is this OKay doing? I've added the patch.



Stefan Seufert wrote:
Hi,

can you try to find messages of the following format in your logs?

CHECKING IF WE SHOULD CLONE A CHILD...
total_processors = %d, max_processors = %d
idle_processors = %d, min_free_processors = %d

Startup of new children is based on these values. Wither these values
get incorrect over time (e.g. the server still thinks that he has free
idle processors when he in fact doesn't) or this section is never called
(in which case these messages won't appear at all).

(This problem is another argument for having a handler to display the
contents of the child_info_table. I'll try to find some free time in
order to code one).

Stefan

------------------------------------------------------------------------

_______________________________________________
Peruser mailing list
[email protected]
http://www.telana.com/mailman/listinfo/peruser

--- httpd-2.2.2/server/mpm/experimental/peruser/peruser.c	2006-11-27 10:09:51.000000000 +0200
+++ httpd-2.2.2-new/server/mpm/experimental/peruser/peruser.c	2006-11-27 10:24:49.000000000 +0200
@@ -931,6 +931,13 @@
     current_conn = ap_run_create_connection(p, ap_server_conf, sock, conn_id,
                                             sbh, bucket_alloc);
     _DBG("Looking up the right vhost");
+    if (current_conn) ap_update_vhost_given_ip(current_conn);
+    else {
+        _DBG("Crap. We lost a connection. Returning....");
+        ap_log_error(APLOG_MARK, APLOG_ERR, 0,NULL, "Creating a connection failed. Returning...");
+	return;
+    }
+			    
     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");
_______________________________________________
Peruser mailing list
[email protected]
http://www.telana.com/mailman/listinfo/peruser

Reply via email to