[#7789] too much IMAP traffic with IMP 4
Summary too much IMAP traffic with IMP 4
Queue IMP
Queue Version 4.3
Type Bug
State Not A Bug
Priority 2. Medium
Owners
Requester earl (dot) fogel (at) usask (dot) ca
Created 12/18/2008 (198 days ago)
Due
Updated 12/18/2008 (198 days ago)
Assigned
Resolved 12/18/2008 (198 days ago)
Attachments
Milestone
Patch No

History
12/18/2008 Michael Slusarz Comment #2
State ⇒ Not A Bug
Reply to this comment
#1 - You can't compare IMP 3 and IMP 4 - IMP 4 is doing vastly more 
stuff than IMP 3, so there's going to be some level of extra IMP 
traffic.
#2 - You are almost certainly not using caching.  If you care about 
performance at all, you need to be caching IMAP data.
#3 - As for the terribleness of the IMAP commands actually sent to the 
server - this has nothing to do with the Horde project.  We use the 
c-client IMAP library - it is what is sending the commands to the 
server.  I won't even begin to describe the inefficiencies of the IMAP 
commands it sends.  This is why an entirely new IMAP library has been 
written for IMP 5.
12/18/2008 earl (dot) fogel (at) usask (dot) ca Comment #1
Patch ⇒
Milestone ⇒
Summary ⇒ too much IMAP traffic with IMP 4
Type ⇒ Bug
State ⇒ Unconfirmed
Priority ⇒ 2. Medium
Queue ⇒ IMP
Reply to this comment
I have IMP 3 and IMP 4 both running on the same server -- same 
hardware, same operating system, same apache, same php.  With IMP 3, 
listing a mailbox takes less than 1 second. With IMP 4 it takes 5 
seconds.

So, I used tcpdump to trace the IMAP traffic, and found IMP 4 is doing 
far too much work.

My test mailbox has about 1000 messages, IMP is configured to display 
100 per page.

With this setup, IMP 3 does 6 IMAP FETCHes, IMP 4 does 305 IMAP 
FETCHes.  In addition, it looks like IMP 4 is fetching the same group 
of messages (106:125) over and over again.

IMP 3 IMAP Trace:

LOGIN ...
CAPABILITY
SELECT bulk
LSUB "" *
LIST "" INBOX
FETCH 1:20 (UID ENVELOPE BODY PEEK[HEADER.FIELDS (Newsgroups 
Content-MD5 Content-Disposition Content-Language Content-Location 
Followup-To References)] INTERNALDATE RFC822 SIZE FLAGS)
FETCH 21:1299 (UID INTERNALDATE RFC822 SIZE FLAGS)
SEARCH UNSEEN
FETCH 21:40 ...
FETCH 41,42:61
FETCH 62,63:82
FETCH 83,84:103
LOGOUT


IMP 4 IMAP Trace:

LOGIN ...
CAPABILITY
STATUS bulk ((MESSAGES.RECENT.UNSEEN.UIDNEXT.UIDVALIDITY)
EXAMINE bulk
UID FETCH 1 UID
UID FETCH 2 UID
UID FETCH 3 UID
...
UID FETCH 98 UID
UID FETCH 99 UID
UID FETCH 100 UID
FETCH.1,2:21.(ENVELOPE.BODY.PEEK[HEADER.FIELDS.(Newsgroups.Content-MD5.Content-Disposition.Content-Language.Content-Location.Followup-To.References)].INTERNALDATE.RFC822.SIZE.FLAGS)
FETCH 22,23:42 ...
FETCH 43,44:63 ...
FETCH 64,65:84 ...
FETCH 85,86:105 ...
GETQUOTAROOT bulk
FETCH 1,106:125 (BODYSTRUCTURE.FLAGS)
FETCH 1 BODY PEEK[HEADER]
FETCH 2,106:125 (BODYSTRUCTURE.FLAGS)
FETCH 2 BODY PEEK[HEADER]
FETCH 3,106:125 (BODYSTRUCTURE.FLAGS)
FETCH 3 BODY PEEK[HEADER]
...
FETCH 99,106:125 (BODYSTRUCTURE.FLAGS)
FETCH 99 BODY PEEK[HEADER]
FETCH 100,106:125 (BODYSTRUCTURE.FLAGS)
FETCH 100 BODY PEEK[HEADER]
LOGOUT