Words of wisdom about using the Memcached UDP protocol?

EKC webmaster at generalsynthesis.com
Wed Jan 31 05:08:30 UTC 2007


Yes. You're absolutely right: 3900 connections per server. Still,
setting up and maintaining all of those TCP connections could use
memory that would be better used by memcached. I suppose we could
follow your lead and stop using persistent connections. However,
setting up a tcp connection isn't free.

I'm probably prematurely optimizing here.



On 1/30/07, Reinis Rozitis <roze at roze.lv> wrote:
> "300*13*13 = 50,700 TCP connections"
>
> The math and the numbers seem a bit wrong to me - its not like those 50k
> connections will handle one server will it? :)
> So practically if you are using persistant connections one server has to
> handle at most 13*300 = 3900 connections (the same goes for memcached and
> http servers - eg each of the preforked daemon connects to each memcached,
> each memcached recieves only one connection from each preforked perl
> daemon - if I understand your architecture correctly) which is no issue for
> Memcached.
>
> And if you are looking at libevent benchmarks (on epoll)
> http://monkey.org/~provos/libevent/ there is no big difference timewise.
>
> >From our experience we are using 8 webservers with spawned 250 php fastcgi
> childs on each and connecting to 3 memcached servers. Although we dont use
> persistant connections more likely we will hit bandwidth limitations
> (transfering allready few Tb per day) from a single host (on a gigabit lan)
> than some tcp connection limits.
>
> I cant comment the UDP feature as the php extension doesnt support it.
>
> I would preffer to use the latest 1.2.1 version. It works better for us at
> least.
>
> rr
> ----- Original Message -----
> From: "EKC" <webmaster at generalsynthesis.com>
> To: <memcached at lists.danga.com>
> Sent: Wednesday, January 31, 2007 5:04 AM
> Subject: Words of wisdom about using the Memcached UDP protocol?
>
>
> > Hello,
> >
> > I've got 200 preforked http daemons (light weight http server written
> > in Perl) running on each of 5 servers in a memcached pool.  I'm
> > planning on upping that to 13 servers and 300 http daemons per server
> > (quad core opteron systems).
> >
> > Needless to say, I am starting to worry about the saneness of keeping
> > all of those connections open for memcached (300*13*13 = 50,700 TCP
> > connections). I was perusing the Memcached protocol doc at
> > http://code.sixapart.com/svn/memcached/trunk/server/doc/protocol.txt
> > and the description of the UDP protocol caught my eye.
> >
> > I can rewrite my app to tolerate some datagram loss. Tornado codes are
> > an option, too. I'm a bit worried about network congestion, but I
> > suppose I could tweak some switch settings to deal with that.
> >
> > However, is anyone actually using Memcached over UDP in a large scale
> > deployment? If so, are you still using TCP for set requests, or have
> > you moved over to UDP entirely? I recall reading that Facebook uses
> > memcached and I'm guessing they may have though about using UDP, too.
> > Any words of wisdom?
> >
> > I'm using the perl API which does not seem to support UDP, so I will
> > have to do a fair bit of refactoring to move over to UDP.
> >
> > Finally, which branch of the Memcached server daemon should I be using
> > if I'm going to be using UDP? I head about a multithreaded version of
> > the memcached daemon. Should I move over to that or is the overhead
> > not worth it?
> > ...
> > I'm using memcached 1.1.13-pre from
> > http://code.sixapart.com/svn/memcached/branches/facebook/
> >
> > Thanks in advance!
> >
> >
>
>
>


More information about the memcached mailing list