If you want a faster Kolab, read this.
Bron Gondwana
brong at fastmail.fm
Mon Sep 14 18:05:34 EDT 2015
On Tue, Sep 15, 2015, at 07:52, Andrew Morgan wrote:
> Here is a summary of the commands the client issued:
>
> A0001 STARTTLS
As I said above - be nice to avoid this for traffic to localhost.
> A0002 CAPABILITY
And by avoiding STARTTLS you also avoid the need for this roundtrip. Cyrus announces the CAPABILITY in the initial banner.
> A0003 ID ("name" "Roundcube" "version" "1.1.2" "php" "5.3.3" "os" "Linux" "command" "/webmail/8d61c34e132a834f/?_task=mail&_action=preview&_uid=11&_mbox=INBOX&_framed=1&_caps=pdf%3D1%2Cflash%3D1%2Ctif%3D0")
Bah, ID. This should be issued after authenticating IMHO. We no longer advertise the capability pre-auth at FastMail, because you're talking to nginx then, and it doesn't understand ID.
> A0004 AUTHENTICATE PLAIN ****** [57]
> A0005 GETMETADATA
What, a raw GETMETADATA with no params? I guess that's one way to see if it's supported.... but the CAPABILITY command should have said that.
> A0006 LIST ""
This is basically the same as "NAMESPACE" with two params, but with one? That looks like a bug.
. LIST ""
. BAD Missing required argument to List: mailbox pattern
(against a recently calibtrated reference Cyrus)
So I'm assuming you took liberties copying and pasting?
> A0007 MYRIGHTS
Likewise, missing arguments
> A0008 SELECT Configuration
Should be quick unless it's a really big folder.
> A0009 LSUB "" "*"
Should be quick.
> A0010 LIST "" "*"
Might be expensive depending how many users you have on the server. We have plans of speeding this up with a reverse ACL index.
> A0011 GETMETADATA Archive (/private/vendor/kolab/folder-type/shared/vendor/kolab/folder-type)
Again, depends how many folders you have and what DB type. This is a keyed read on annotations.db, so should be O(log N).
> A0012 MYRIGHTS Tasks
> A0013 GETMETADATA Tasks (/private/vendor/kolab/displayname/shared/vendor/kolab/displayname)
> A0014 GETMETADATA Tasks (/private/vendor/kolab/color/shared/vendor/kolab/color)
> A0015 MYRIGHTS Contacts
> A0016 MYRIGHTS "Contacts/Personal Contacts"
> A0017 GETMETADATA Contacts (/private/vendor/kolab/displayname/shared/vendor/kolab/displayname)
> A0018 GETMETADATA "Contacts/Personal Contacts" (/private/vendor/kolab/displayname/shared/vendor/kolab/displayname)
> A0019 GETMETADATA Contacts (/private/vendor/kolab/uniqueid/shared/vendor/cmu/cyrus-imapd/uniqueid/shared/vendor/kolab/uniqueid)
> A0020 GETMETADATA "Contacts/Personal Contacts" (/private/vendor/kolab/uniqueid/shared/vendor/cmu/cyrus-imapd/uniqueid/shared/vendor/kolab/uniqueid)
And so on through all these.
> A0021 SELECT Contacts
> A0022 LOGOUT
>
> 1-2 seconds for all those commands is pretty damn fast. I don't know if
> that generates much disk I/O, but there must be at least a few I/Os
> required to do that.
It's all going to come down to how much is already mapped into memory. It's going to be a bit of random IO. I'd still expect to see it faster than 1-2 seconds on a small account and semi-decent hardware though.
Bron.
--
Bron Gondwana
brong at fastmail.fm
More information about the Info-cyrus
mailing list