My apologies for the extreme length, but I do want to include what
information I have.
When Cornell upgraded from SquirrelMail v1.4.1 from v.1.2.11, our IMAP
servers started to buckle and die under the load from the increased IMAP
traffic. This server is no slouch (Sun VX880 w/8 processors & 32G RAM) so
it was very surprising to everyone here that it did happen. I was forced
to downgrade back to 1.2.11 to reduce the load on the IMAP serer.
In an effort to figure out what was going on I hacked SquirrelMail v1.2.11
& v1.4.1 to write out every IMAP command it issued to a file. I noticed
several things quite odd in the login process.
Here's the snapshot of a user logging into an IMAP server with
SquirrelMail v1.4.1 with no filters:
LOGIN "time005-demo" <snip>
CAPABILITY
NAMESPACE
LOGOUT
LOGIN "time005-demo" <snip>
EXAMINE "INBOX"
LOGOUT
LOGIN "time005-demo" <snip>
SELECT "INBOX"
EXPUNGE
EXAMINE "INBOX"
EXAMINE "INBOX"
SELECT "INBOX"
EXPUNGE
EXPUNGE
FETCH 1 (FLAGS UID RFC822.SIZE BODY.PEEK[HEADER.FIELDS (Date To Cc From
Subject X-Priority Content-Type)])
LSUB "INBOX." "*"
LIST "" "INBOX.Drafts"
LIST "" "INBOX.Sent"
LIST "" "INBOX.Trash"
LIST "" "INBOX"
LOGOUT
LOGIN "time005-demo" <snip>
LIST "" "INBOX.Sent"
LSUB "INBOX." "*"
LIST "" "INBOX.Drafts"
LIST "" "INBOX.Sent"
LIST "" "INBOX.Trash"
LIST "" "INBOX"
LIST "" "INBOX.Trash"
LSUB "INBOX." "*"
LIST "" "INBOX.Drafts"
LIST "" "INBOX.Sent"
LIST "" "INBOX.Trash"
LIST "" "INBOX"
LIST "" "INBOX.Drafts"
LSUB "INBOX." "*"
LIST "" "INBOX.Drafts"
LIST "" "INBOX.Sent"
LIST "" "INBOX.Trash"
LIST "" "INBOX"
EXAMINE "INBOX"
LSUB "INBOX." "*"
LIST "" "INBOX.Drafts"
LIST "" "INBOX.Sent"
LIST "" "INBOX.Trash"
LIST "" "INBOX"
STATUS "INBOX" (MESSAGES UNSEEN RECENT)
EXAMINE "INBOX.Trash"
LOGOUT
The amount of repetition of commands has me quite concerned. The impact
may be minimal for a few users, but when you have several hundred
simultaneous users at a given moment and thousands of users logging in and
out during the course of a business day, this repetition can cause a
considerable strain for an IMAP server. What I find particularly odd is at
the very end where it repeats the listing of folders several times in
succession which doesn't happen under SquirrelMail v1.2.11.
If you have filters, it gets even worse. Here's a capture of a user
logging into an IMAP server with SquirrelMail v1.4.1 with only three
filters:
LOGIN "time005-demo" <snip>
CAPABILITY
NAMESPACE
LOGOUT
LOGIN "time005-demo" <snip>
EXAMINE "INBOX"
SELECT "INBOX"
EXPUNGE
SEARCH CHARSET US-ASCII ALL From {3}
Lee
LIST "" "INBOX.Drafts"
SEARCH CHARSET US-ASCII ALL From {3}
Dan
LIST "" "INBOX.Drafts"
SEARCH CHARSET US-ASCII ALL From {3}
Jon
LIST "" "INBOX.Drafts"
LOGOUT
LOGIN "time005-demo" <snip>
SELECT "INBOX"
EXPUNGE
EXAMINE "INBOX"
SELECT "INBOX"
EXPUNGE
SEARCH CHARSET US-ASCII ALL From {3}
Lee
LIST "" "INBOX.Drafts"
SEARCH CHARSET US-ASCII ALL From {3}
Dan
LIST "" "INBOX.Drafts"
SEARCH CHARSET US-ASCII ALL From {3}
Jon
LIST "" "INBOX.Drafts"
EXAMINE "INBOX"
SELECT "INBOX"
EXPUNGE
EXPUNGE
FETCH 1 (FLAGS UID RFC822.SIZE BODY.PEEK[HEADER.FIELDS (Date To Cc From
Subject X-Priority Content-Type)])
LSUB "INBOX." "*"
LIST "" "INBOX.Drafts"
LIST "" "INBOX.Sent"
LIST "" "INBOX.Trash"
LIST "" "INBOX"
LOGOUT
LOGIN "time005-demo" <snip>
LIST "" "INBOX.Sent"
LSUB "INBOX." "*"
LIST "" "INBOX.Drafts"
LIST "" "INBOX.Sent"
LIST "" "INBOX.Trash"
LIST "" "INBOX"
LIST "" "INBOX.Trash"
LSUB "INBOX." "*"
LIST "" "INBOX.Drafts"
LIST "" "INBOX.Sent"
LIST "" "INBOX.Trash"
LIST "" "INBOX"
LIST "" "INBOX.Drafts"
LSUB "INBOX." "*"
LIST "" "INBOX.Drafts"
LIST "" "INBOX.Sent"
LIST "" "INBOX.Trash"
LIST "" "INBOX"
EXAMINE "INBOX"
SELECT "INBOX"
EXPUNGE
SEARCH CHARSET US-ASCII ALL From {3}
Lee
LIST "" "INBOX.Drafts"
SEARCH CHARSET US-ASCII ALL From {3}
Dan
LIST "" "INBOX.Drafts"
SEARCH CHARSET US-ASCII ALL From {3}
Jon
LIST "" "INBOX.Drafts"
LSUB "INBOX." "*"
LIST "" "INBOX.Drafts"
LIST "" "INBOX.Sent"
LIST "" "INBOX.Trash"
LIST "" "INBOX"
STATUS "INBOX" (MESSAGES UNSEEN RECENT)
EXAMINE "INBOX.Trash"
LOGOUT
The filters alone are applied three times before the user sees the message
list at the end of logging in. From an IMAP server's perspective that's a
lot of commands to process in a short period of time. It's more than
enough to cripple our IMAP servers with the load they're currently
experiencing.
Unfortunately I don't have any solutions for this to propose. I do have
some questions though for the developers:
1) How are your efforts at making SquirrelMail for efficient (In terms of
issuing IMAP commands) coming along? Do you have anything in CVS to try &
see if it's not as chatty (And therefore not much of a strain on an IMAP
server)?
2) Has there been any discussion about adding persistence to SquirrelMail?
I really do want to keep SquirrelMail in operation here at Cornell, but
I'm under intense pressure to alieviate the strain on the IMAP servers
SquirrelMail is causing. Any help you can provide would be greatly
appreciated.
Lee Brink
--
"I have always wished that my computer would be as easy to use as my
telephone. My wish has come true. I no longer know how to use my
telephone."
-Bjarne Stroustrup, computer science professor, designer of C++
programming language (1950- )
-------------------------------------------------------
This SF.Net email sponsored by: Free pre-built ASP.NET sites including
Data Reports, E-commerce, Portals, and Forums are available now.
Download today and enter to win an XBOX or Visual Studio .NET.
http://aspnet.click-url.com/go/psa00100003ave/direct;at.aspnet_072303_01/01
--
squirrelmail-users mailing list
List Address: [EMAIL PROTECTED]
List Archives: http://sourceforge.net/mailarchive/forum.php?forum_id=2995
List Info: https://lists.sourceforge.net/lists/listinfo/squirrelmail-users