On 03/06/2013 04:07 PM, Alan McKinnon wrote: > On 06/03/2013 22:59, Michael Mol wrote: >> On 03/06/2013 03:54 PM, Grant wrote: >>> I lowered my MaxClients setting in apache a long time ago after >>> running out of memory a couple times. I recently optimized my >>> website's code and sped the site way up, and now I find myself >>> periodically up against MaxClients. Is a RAM upgrade the only >>> practical way to solve this sort of problem? >> >> Use a reverse proxy in caching mode. >> >> A request served up by the proxy server is a request not served up by >> Apache. >> >> Squid, nginx and varnish are all decent for the purpose, though squid >> and nginx are probably the more polished than varnish. >> > > Grant, > > If you optimized the site well, I would imagine your RAM needs per page > request would go down and you could possibly increase MaxClients again. > Have you given it a try since the optimization? Increase it slowly bit > by bit comparing the current performance with what it used to be, and > make your judgement call. > > Is there some reason why you can't just add more memory to the server? > It's a fast and very cheap and very effective performance booster with > very little downtime. But if your slots are full and you need new > hardware, that's a different story. > > Michael's proxy suggestion is excellent too - I use nginx for this a > lot. It's amazingly easy to set up, a complete breath of fresh air after > the gigantic do-all beast that is apache. Performance depends a lot on > what your sites actually do, if every page is dynamic with changing > content then a reverse proxy doesn't help much. Only you know what your > page content is like.
The thing to remember is that clients request a *lot* of static content, too. CSS styles, small images, large images...these cache very well, and (IME) represent the bulk of the request numbers. Unfortunately, with the way mod_php and friends work with Apache, resources consumed by static file requests aren't trivial once you realize that the big problem is with the number of concurrent requests...so it's best if those can be snapped up by something else, first. I've been running squid in front of my server for a few years. I've been eyeing CloudFlare, though; they're a CDN that behaves like a reverse proxy. You point their system at your server, your DNS at their system, and they'll do the heavy lifting for you. (And far better than having your own singular caching server would. I've worked at a CDN, and what they accomplish is pretty slick.)
signature.asc
Description: OpenPGP digital signature