Yeah, I remember the whole fiasco pre loadable server modules. Loadable server modules definitely made it better, but even so, they too are resource hogs. The first time I ran up against it, I had just started working for this media company. Every time they would release something new, their webservers would freeze up from so many people slamming the servers.
It was funny. It was my second day on the job and I had 6 executives standing at my desk looking like they were about to cry because the webservers were frozen up because they had just released some new media.
I logged into the web servers and first thing I noticed was all the servers had was 1gb of memory. The php.ini said it was using a max memory of 32M and http.conf had max clients at 256.
(for those that don't understand, 32mb * 256 is a lot more than 1gb of memory! )
Anyhow, I kicked maxclients down to 20 from it's default of 256 (32mb * 20 = 640mb, leaving 384mb for the OS), and restarted Apache. All the sudden all the requests were being completed, though sometimes a bit slow. Every request was being filled though and that made for a lot of happy executives! :laugh2:
The other admin (developer, not really an admin) thought lowering maxclients to 20 wouldn't allow the webserver to server enough people. Sure it will, they will just have to wait in line rather than have the web server over-tax itself all at once!
Depending on the day, our web servers take 8 to 15 million hits per day. (99% of that happens between 8am and 4pm) Mostly ajax requests and each client does around 10 requests per second. I only use two web servers to handle this load, but then I'm not serving php or anything like that. My Apache servers only proxy the connections to the backend JBoss cluster. Actually, just one server can handle the entire load, but I keep two for obvious reasons.