> > That's not entirely true. It is in fact the case that mod_perl's > *upper-bound* on memeroy usage is similar to the equivalent script > runnung as a cgi. > > A well designed mod_perl application loads as many shared libraries as > possible before Apache forks off the child processes. This takes > advantage of the standard "copy-on-write" behavior of the fork() system > call; meaning that only the portions of the process memory that differ > from the parent will actually take up extra memory, the rest is shared > with the parent until one of them tries to write to that memory, at > which time it is copied before the change is made, effectively > "unsharing" that chunck of memory. > > Unfortunately, it's not a perfect world, and the Perl interpreter isn't > perfect either: it mixes code and data segments together throughout the > process address space. This has the effect that as the code runs and > variables/structures are changed, some of the surrounding code segments > in the memory space are swept up into the memory chunks during a > copy-on-write, thereby slowly duplicating the memory between processes > (where the code would ideally be indefinitely shared). > Fortunately, Apache has a built in defence against this memory creep: > the MaxRequestsPerChild directive forces a child process to die and > respawn after a certain number requests have been served, thereby > forcing the child process to "start fresh" with the maximum amount of > shared memory.
The bigger problem is that if one of the modules you include in the pre-fork is foobarred you may/will not be able to start the server... > In the long run, this means that if you pre-load as many shared > libraries as possible and tweak the MaxRequestsPerChild directive, > you'll probably see significantly less memory usage on average. Not to > mention all the other speed and efficiency increases that you're already > mod_perl provides. Apache::SizeLimit is a better approach as it only reaps large children!! > j > > > > -- > [EMAIL PROTECTED] (please don't reply to @yahoo) > > > --------------------------------- > Post your free ad now! Yahoo! Canada Personals > -- Report problems: http://perl.apache.org/bugs/ Mail list info: http://perl.apache.org/maillist/modperl.html List etiquette: http://perl.apache.org/maillist/email-etiquette.html