[imp] Server setup for customer base of over 10,000

Lord Apollyon implist at paypc.com
Tue Sep 16 17:34:46 PDT 2003


> We are running into a problem with our Horde/Imp server at our 
> university.  When we converted to the CVS/head version of horde and imp 
> last year we found that we could no longer use multiple servers for 
> web/imap due to session information.

*DO* Check out "msession" which is a very high performance multi-box session
management engine which can interface to SQL backends if long-term session
state is desired (for IMP it's generally NOT).

I myself have used the ADODB (DB abstraction library which can offer a
nicely exported PHP-user-mode session management interface to any type of
SQL back-ends) with excellent performance, but msession would offer MUCH
higher speeds where transient session state mamagement is all that's desired.

Check it out at: <http://www.mohawksoft.com/devel/msession.html>

> We would like to know what others 
> are doing for a user base of over 10,000.  This would include dns, 
> servers, etc.

I would think an imap-proxy would be in an important part of your strategy,
but I suspect due to the nature of how the imapd-proxy works, you'd want to
centralise the proxying functions.  Namely, you have one machine be
dedicated to the imap-proxying, so it's the central repository of the reused
connections, etc.  Make sure it has RICH connectivity too - like dual
100BaseT (or GigE) NICs - one side to handle the client requests and one to
the server end.

*DO* use multiple web-servers which make use of "msession" to distribute
session state so that if users connect to different web-servers, they don't
lose their session state.  Configure your msession to *NOT* use a SQL
backend, since you're only after transient session preservation (lifetime =
one hour or less).  msession offers wickedly high-speed session store modes
for such things.  It's fully documented.

You might also need to use multiple SQL servers in replication mode, *IF*
you're finding that the back-end is starting to cramp your style.  It's
probably not yet, though, since Horde/IMP makes pretty lightweight use of it.

I think multi-web, single-SQL, single-imapd-proxy should give you plenty of
joy in the performance end of things.  Remember too the issues of network
contention/etc when usage gets really high.  Don't be stingy with the
network cards.  PHP is a resource *HOG* (with a huge litter of piglets) -
you will bog down there first.

Also, try to splay your mailboxes residing on your SAN across different
spindles.  Remember the old mainframe rules - they still apply in the
"Modern Era".  More spindles are always better.  Don't underestimate the
costs of continual head-seeks caused by too many simultaneous requests to
the same filesystem, etc.  Each seek costs in the realm of 5-10ms!!!  This
cost is a basal transaction cost whether it's for 512 bytes or 512KBytes.

Good luck!

=Lord Apollyon=


More information about the imp mailing list