awful performance: expunging behavior

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Not sure if this is fixed/re-worked in 1.5, but in 1.4, I'm seeing some
awful behavior regarding auto_expunge.  I think auto_expunge is a good
thing -- people expect their mail clients to behave in the manner it
provides.  However, when enabled, the client forces an expunge on every
mailbox view/select/load, which causes undue stress on the IMAP server.
I was seeing in the neighborhood of a constant 20MB/s *writes* and a
couple thousand IOPS just keeping the mail server running.  The issue is
that EXPUNGE causes Cyrus IMAP to rebuild the index and cache files of
the mailbox and this causes heavy and continuous i/o on servers with
thousands of users (and we have about 350,000).  

Want to see this for yourself?  strace an imapd and watch for calls like
this: 

open("/var/stores/3/O/user/jmadden/cyrus.index.NEW", O_RDWR|O_CREAT|
O_TRUNC, 0666) = 19
open("/var/stores/3/O/user/jmadden/cyrus.cache.NEW", O_RDWR|O_CREAT|
O_TRUNC, 0666) = 20
...A bunch of mmap()'s
...A bunch of write()'s
...A couple of fsync()'s
rename("/var/stores/3/O/user/jmadden/cyrus.index.NEW",
"/var/stores/3/O/user/jmadden/cyrus.index") = 0
rename("/var/stores/3/O/user/jmadden/cyrus.cache.NEW",
"/var/stores/3/O/user/jmadden/cyrus.cache") = 0

A mailbox with just 250 msgs has a cyrus.cache of a bit over 300k and a
cyrus.index of 15k -- imagine that writing happening on every mailbox
view for every user.  Ugh.

Expunge is unnecessary if you're not doing any writes to the mailbox, so
why are we doing it on every click?  I couldn't find an answer to that,
so I "fixed" the problem by commenting out the calls to
sqimap_mailbox_expunge in mailbox_display.php:showMessagesForMailbox and
imap_mailbox.php:sqimap_mailbox_select().  If anyone has any other
suggestions, I'd be happy to explore them.

As far as I can tell, the client behaves exactly the same (deleting
messages actually deletes messages, etc.), but load average on the IMAP
backend as well as the always-write i/o have been significantly reduced.
YMMV, but I figured I'd send this to get it in the archives in case it
can help others -- I've been struggling with this problem for weeks.

John




-- 
John Madden
Sr. UNIX Systems Engineer
Ivy Tech Community College of Indiana
jmadden@xxxxxxxxxxx


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
-----
squirrelmail-users mailing list
Posting guidelines: http://squirrelmail.org/postingguidelines
List address: squirrelmail-users@xxxxxxxxxxxxxxxxxxxxx
List archives: http://news.gmane.org/gmane.mail.squirrelmail.user
List info (subscribe/unsubscribe/change options): https://lists.sourceforge.net/lists/listinfo/squirrelmail-users

[Index of Archives]     [Video For Linux]     [Yosemite News]     [Yosemite Photos]     [gtk]     [KDE]     [Cyrus SASL]     [Gimp on Windows]     [Steve's Art]     [Webcams]

  Powered by Linux