If left unbounded, then after a certain number of requests the
children will use up all the available memory and leave the server to
die from memory starvation. Note that sometimes standard system
libraries leak memory too, especially on OSes with bad memory
management (e.g. Solaris 2.5 on x86 arch).
If this is your case you can set MaxRequestsPerChild
to a small
number. This will allow the system to reclaim the memory that a
greedy child process consumed, when it exits after
MaxRequestsPerChild
requests.
But beware — if you set this number too low, you will lose some of
the speed bonus you get from mod_perl. Consider using
Apache::PerlRun
if this is the case.
Another approach is to use the Apache::SizeLimit
or the
Apache::GTopLimit
modules. By using either of these modules you
should be able to discontinue using the MaxRequestPerChild
,
although for some developers, using both in combination does the
job. In addition the latter module allows you to kill any servers
whose shared memory size drops below a specified limit.
References
-
The mod_perl site’s URL: http://perl.apache.org/
-
Apache::GTopLimit
http://search.cpan.org/search?dist=Apache-GTopLimit