Performance and cheap storage

Phil Pennock info-cyrus-spodhuis at spodhuis.org
Mon Aug 7 11:59:33 EDT 2006


On 2006-08-07 at 12:15 -0300, Henrique de Moraes Holschuh wrote:
> On Mon, 07 Aug 2006, Kjetil Torgrim Homme wrote:
> > I think David is missing the issue: it's the proxied connection which is
> > problematic, not the connection to the client.  this locks the IP
> > addresses to the frontend's and the backend's, and the port on the
> > backend side is always 143 (or whatever you prefer), so the only
> > variable part of the tuple is the port number on the frontend.  this
> > restricts a frontend to 65k connections to each backend.
> 
> Not if the two hosts are capable of TCP timestamps, AFAIK.

TCP timestamps affects the quantity of data that can be in flight but
doesn't affect the identification of the connection.  [RFC1323].

The main issue is that a connection is identifed by its two end-points,
where an end-point is the IP address and the port.  Various other fields
can be used to discard packets as being bad, not to multiplex
connections.

So with one port on the backend, you have as many connections as there
are available ports on the front-end.  Typically 32k-ish.

The "easy" fix is theoretically to configure up extra private addresses
as aliases on the backend, and distribute the load over all of them.
This avoids having multiple ports and multiple entries -- it's one
cyrus.conf listening.  The problem may be making sure that the front-end
knows that several backends are tied together as being one real system,
to avoid interesting failover effects.
-- 
"Everything has three factors: politics, money, and the right way to do it.
 In that order."  -- Gary Donahue


More information about the Info-cyrus mailing list