Multiple nodes vs multiple servers

Dustin Sallings dustin at spy.net
Thu May 10 22:19:27 UTC 2007


On May 10, 2007, at 14:58 , Steve Grimm wrote:

> On 5/10/07 11:09 AM, "Dustin Sallings" <dustin at spy.net> wrote:
>>   No, I don't wait, but with a single connection to memcached  
>> (where "single"
>> may be substituted with a small number), requests naturally stack  
>> up and can
>> be merged.  Write buffers can pull from all queued events.   
>> Reducing the
>> number of packets moved around the network for requests would seem  
>> like it
>> should increase performance.
>
> Yes, absolutely it will, both from a server CPU point of view  
> (multi-get is
> much more efficient than get) and, if you're really pushing a lot of
> traffic, from a network capacity point of view. So you're saying the
> batching only happens when the socket buffer on your memcached  
> connection is
> full and you have to hang on to data and wait for the connection to  
> become
> writeable again anyway? That makes sense. (Yes, sorry, I know I  
> could just
> go look at the code...)

	Right.  I'm a bit lazier in this than I could be (partially because  
buffers in java are...weird), but effectively, the IO thread  
maintains its own write buffer that it fills from buffers from other  
operations.  There's a special case in the fill method that merges  
sequential gets.

	Even without the get merging, multiple requests to the same server  
may be sent in the same packet.

> I think it isn't something we ever considered because the ratio of  
> number of
> memcached hosts to number of client processes on any single client  
> machine
> here is pretty high; the chances of enough separate client  
> processes on one
> host needing to write enough requests to the same memcached host at  
> the same
> time to clog up a connection are pretty slim. But if your number of  
> clients
> per host is much higher than your number of memcached servers, then  
> that
> wouldn't be so true.

	This makes sense.  In a java app server context like mine, I'd get  
very little benefit from such a thing because I'm already able to  
share the connection resource very effectively.  I'm thinking more  
about the cases where people aren't able to.

	You seem to have your farm well under control.

>>   It's interesting that you tried this.  Do you still have the proxy
>> application available?  It may be a good starting point for my  
>> experiments,
>> and it may not be as optimal as what I'm thinking.
>
> We do still have it, and the plan from the start was to release it  
> as open
> source at some point. Since it ended up being less useful than we  
> thought it
> would be, I didn't finish the prep work for that. It still needs a  
> bit of
> cleaning up (not to mention documentation) before I'd be comfortable
> unleashing it on the world. If people are really interested I'll  
> see what I
> can do, but don't expect it tomorrow or anything.

	Well, don't worry about the state of it too much, but take your  
time.  I'm not in a huge hurry to take on more work now anyway.

-- 
Dustin Sallings


-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.danga.com/pipermail/memcached/attachments/20070510/2d17c6e4/attachment-0001.html


More information about the memcached mailing list