On Tuesday 12 March 2002 06:18, you wrote:
> I'm a heavy mod_perl user, running 3 sites as virtual servers, all with
> lots of custom Perl code.  My httpd's are huge(~50mb), but with the help
> of a startup file I'm able to get them sharing most of their
> memory(~43).  With the help of GTopLimit, I'm able to keep the memory
> usage under control.
>
> But... recently, something happened, and things have changed.  After
> some random amount of time (1 to 40 minutes or so, under load), the
> parent httpd suddenly loses about 7-10mb of share between it and any new
> child it spawns.  As you can imagine, the memory footprint of my httpds
> skyrockets and the delicate balance I set up is disturbed.  Also,
> GTopLimit is no help in this case - it actually causes flailing because
> each new child starts with memory sharing that is out of bounds and is
> thus killed very quickly.

We saw something similar here, running on Linux servers.  Turned out to be 
that if the server swapped hard enough to swap an HTTPd out, then you 
basically lost all the shared memory that you had.  I can't explain all of 
the technical details and the kernel-ness of it all, but from watching our 
own servers here this is what we saw on some machines that experienced 
quite a high load.

Our quick solution was first to reduce some the number of Mod_perls that 
we had running, using the proxy-front-end/modperl-back-end technique, and 
then supplemented that by adding another Gig of RAM to the machine.

And yes, once you've "lost" the shared memory, there isn't a way to get it 
back as "shared" again.  And yes, I've also seen that when this happens 
that it could full well take the whole server right down the toilet with 
it (as then your ~800MB of shared memory becomes ~800MB of _physical_ 
memory needed, and that could throw the box into swap city).

-- 
Graham TerMarsch
Howling Frog Internet Development, Inc.   http://www.howlingfrog.com

Reply via email to