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