Bug #11676 Updated: A few apache children consume all memory and CPU.
| From: | zeev@php.net | Date: | Tue, 26 Jun 2001 18:31:52 +0000 |
| Subject: | Bug #11676 Updated: A few apache children consume all memory and CPU. | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-58091@lists.php.net to get a copy of this message | ||
ID: 11676
Updated by: zeev
Reported By: valerio@wnet.it
Old-Status: Open
Status: Closed
Bug Type: Scripting Engine problem
Operating system:
PHP Version: 4.0 Latest CVS (2001-06-25)
Assigned To:
Comments:
Output buffering indeed cannot be used inside output handler functions. However, the code that
handled that error situation contained a bug that caused PHP to enter an infinite loop. This bug is
now fixed (although the limitation of not being able to use output buffering inside output handlers
still applies)
Previous Comments:
---------------------------------------------------------------------------
[2001-06-26 07:32:26] valerio@wnet.it
Well, the problem is that we have many virtual hosts on that server, each using it's own log
file...
I can confirm that the gdb trace for ALL the many dead process, which are in running state, gives
the three lines:
#0 0x4012c23e in chunk_free ()
#1 0x4012bfaa in __cfree ()
#2 0x80fbcbf in shutdown_memory_manager ()
(it happened this morning too)
Is there some way to know which script was executing just before the child died, please tell me!
---------------------------------------------------------------------------
[2001-06-26 07:04:06] sniper@php.net
It would help a lot to track this down if you could find
out if this happens by running some script.
---------------------------------------------------------------------------
[2001-06-25 17:40:15] valerio@wnet.it
I'm using php 4.0.7-dev (downloaded from the CVS tree), Apache 1.3.20 on a P3 600 1 Gig RAM.
After some hours that the server is running, in no particularly loaded confdition, CPU and memory
utilization grows abnormally, making the server unusable.
"top" shows that 4 o 5 httpd processes are eating 20% CPU each, and are all in
"running" state. I managed to attach a gdb to one of these processes, and here's the
result:
Attaching to program `/usr/local/apache/bin/httpd', Pid 21784
Reading symbols from /lib/libpam.so.0...done.
Reading symbols from /lib/libdl.so.2...done.
Reading symbols from /lib/libcrypt.so.1...done.
Reading symbols from /lib/libresolv.so.2...done.
Reading symbols from /lib/libm.so.6...done.
Reading symbols from /lib/libnsl.so.1...done.
Reading symbols from /lib/libdb.so.3...done.
Reading symbols from /lib/libc.so.6...done.
Reading symbols from /lib/ld-linux.so.2...done.
Reading symbols from /lib/libnss_compat.so.2...done.
Reading symbols from /lib/libnss_files.so.2...done.
0x4012c23e in chunk_free ()
(gdb) bt
#0 0x4012c23e in chunk_free ()
#1 0x4012bfaa in __cfree ()
#2 0x80fbcbf in shutdown_memory_manager ()
This is all I get. I saw MANY MANY bug reports with similarities to this one in the db. The only
solution is stopping and restarting apache. In apache's error_log i get many lines with
"child xxx still did not exit...sending a SIGTERM" and "child xxx still did not
exit...sending a SIGKILL" as soon as i stop it.
Let me know if I can make something to help you out more!
---------------------------------------------------------------------------
ATTENTION! Do NOT reply to this email!
To reply, use the web interface found at http://bugs.php.net/?id=11676&edit=2