painful mupdate syncs between front-ends and database server

Michael Bacon baconm at email.unc.edu
Mon Oct 19 16:38:52 EDT 2009


Hello, list,

Today we're enjoying our first full work day of independence from the old 
monolithic cyrus server installed in 1999 (Sun 6800 -- it's had new CPU 
boards since then, but that's it), and on our new shiny cluster of T5220's 
that are mostly happily operating as a murder.

I say mostly because while most of the times the thing handles our 80,000 
users and 14,000+ simultaneous connections like a champ, some of the time, 
we get some extreme pain, mostly due to syncs between the MUPDATE master 
and the front-end servers.

When we spec'ed out our servers, we didn't put much I/O capacity into the 
front-end servers -- just a pair of mirrored 10k disks doing the OS, the 
logging, the mailboxes.db, and all the webmail action going on in another 
solaris zone on the same hardware.  We thought this was sufficient given 
the fact that no real permanent data lives on these servers, but it turns 
out that while most of thie time it's fine, if the mupdate processes ever 
decide they need to re-sync with the master, we've got 6 minutes of trouble 
ahead while it downloads and stores the 800k entries in the mailboxes.db.

During these sync periods, we see two negative impacts.  The first is 
lockup on the mailboxes.db on the front-end servers, which slows down both 
accepting new IMAP/POP connections and the reception of incoming messages. 
(The front-ends also accept LMTP connections from a separate pair of 
queueing hosts, then proxy those to the back-ends.)  The second is that, 
because the front-ends go into a

It's awfully frustrating that a system that, as my boss says, performs like 
a Camaro most of the times until you hit a little rock in the road, and it 
suddenly turns into a Pinto.  It's also frustrating that this seems like 
one of the less complicated aspects of the system -- publishing replicas of 
a read-only database to a few worker boxes.

I suppose this is Fastmail and others ripped out the proxyd's and replaced 
them with nginx or perdition.  Currently we still support GSSAPI as an auth 
mechanism, which kept me from going that direction, but given the problems 
we're seeing, I'd be open to architectural suggestions on either how to tie 
perdition or nginx to the MUPDATE master (because we don't have the 
back-ends split along any discernable lines at this point), or suggestions 
on how to make the master-to-frontend propagation faster or less painful.

Sorry for the long message, but it's not a simple problem we're fighting.

Michael Bacon
UNC Chapel Hill 


More information about the Info-cyrus mailing list