Best practice for a web farm?
Dustin Sallings
dustin at spy.net
Sat Feb 2 18:04:13 UTC 2008
This post describes about half of why I stopped using Apache
everywhere I could a while ago.
--
Dustin Sallings (mobile)
On Feb 1, 2008, at 23:24, Jed Reynolds <lists at bitratchet.com> wrote:
> dormando wrote:
>> More or less.
>>
>> The most efficient-for-the-money method to start out with is to add
>> more RAM to your CPU nodes (dynamic webservers, whatever) and run a
>> memcached instance on there too. Cheap to add RAM to hardware
>> you're using for other things, but expensive to get entire boxes
>> for it.
>>
>> Very very few people actually peg memcached with CPU usage, and if
>> you, you should be able to afford a few dedicated machines :)
>
> Putting memcached on the same nodes as you put your apache workers
> leaves you in a position to run your memcached into swap during a
> request spike/flood and then you may as well just reboot your node
> because the performance has fallen away badly. For example, if you
> expect to run up to apache 200 workers per node with a worker size
> of 20MB, this means 4GB of ram. If you want to dedicate 1G for
> memcached, make sure you have ram leftover for the rest of your OS
> and cache and buffers. However, the longer you work your workers,
> and depending on your app settings, expect your apache processes to
> fatten over time. So if your workers grow from 20MB to 60MB (I
> regularly see 66MB httpd processes in my environment), then you've
> created a situation where your workers demand 12GB during a request
> spike. If you don't have >12GB ram...uh...yeah.
>
> My point: if you want your web nodes to *take a beating* (and I've
> seen this happen repeatedly from spambots and trackback botnets)
> don't put memcache on your webnodes. Put your memcache on nodes that
> are well protected from memory starvation ...like dedicated boxes or
> an NFS server.
>
>> If you're worried about CPU thrashing a lot, you can use utilities
>> like schedutils to 'ping' memcached to a specific core on a
>> specific CPU, and 'mask' your webserver processes to all of the
>> rest. It can help a little bit but isn't usually necessary.
>
> I wouldn't worry about httpd instances thrashing the cpu, because
> httpd workers overload on a multi-cpu box pretty well. I've often
> watched a 4GB, 4 core Xeon 2.6ghz box handle 4000-10000 connections
> per second, under load 10-20 with about 400 apache workers and while
> it swapped a bit, it kept up surprisingly well. (My httpd instances
> were not as large--more like 25MB). I had my memcached instances on
> my NFS node, which never sustained much load. There were also 3
> mysql servers behind it, too :-) I appreciated that web server a lot.
>
>
> Jed
>
>
More information about the memcached
mailing list