| 
	
 | 
 Posted by Richard Lynch on 01/18/05 19:32 
N.Z. Bear wrote: 
> I am experiencing a problem with httpd child processes suddenly 
> exploding in memory size and consuming all available memory. The 
> behavior is sudden, not gradual: within a few seconds or a minute the 
> process swells to several orders of magnitude larger than its usual 
> size. 
 
My best guess would be a run-away SQL query that has an unconstrained JOIN 
in it... 
 
If this is a new phenomenon, check any new/changed scripts for SQL joins. 
 
> added the '%P' variable to my Apache log file and am now able to 
> identify the specific requests that the Apache child process which 
> explodes was handling prior to the error, but thus far no pattern has 
> emerged (different scripts appear last each time). I suspect that the 
> last entry I see in the log is the last successful request, not the one 
> that causes the problem. (I am aware of log_forensic, which I learned 
> would provide log output of a request *before* processing, but my skills 
> are not sufficient to make me feel comfortable rebuilding my Apache 
> server to include it at this time). 
 
Perhaps a PHP auto_prepend script would let you catch the info you need 
and log it...  Note sure the Apache child is available to PHP, but worth 
looking into. 
 
> I am working around the issue with a cron script that checks if a child 
> process has exploded and then restarts Apache if needed; this helps to 
> mask the issue but is obviously not a fix. 
 
You could probably just kill -9 the one child instead of restarting them 
all, as an even less intrusive temporary work-around... 
 
Maybe even a graceful, though I suspect the run-away child wouldn't 
co-operate.  Might be worth testing, might not, depending on how easily 
you can get it to happen. 
 
--  
Like Music? 
http://l-i-e.com/artists.htm
 
[Back to original message] 
 |