hide/disable non-Mail folders in imap-clients?

Thomas Brüderli bruederli at kolabsys.com
Mon Mar 17 22:30:12 CET 2014


Thomas Brüderli wrote:
> Jan Hofmann wrote:
>> \o/ works like a charm now! :D
>>
>> how much prof-of-concept and do-not-use-for-productive-environment is it? (dump question i know… but… )
> 
> Facts are:
> 
> * it's completely untested (except probably you and me)
> 
> * no experience/tests regarding performance, scalability and stability
>   - there are some TODO's for this

Here's a little update on this. I ran some hand-woven stress tests
against the proxy connecting to a single-host Kolab installation running
on a VM on the same machine.

* One script opened 2K connections and kept them open simultaneously,
most of them being idle. This is the average situation you get when your
users connect with their desktop clients. The proxy didn't seem to have
any problems to handle that number of connections. The node process used
~64 MB of RAM during this and had 1% CPU load. I just had to increase
ulimit -n on my host because each client connection open 2 sockets which
counts towards the max file descriptors per process limit. Not a node
issue though.

* Another simple script just downloads 4K messages from a single folder,
which is typically what a client does upon first connection. The node
process here goes up to 20% CPU and consumes ~ 30 MB of memory.

Comparing the time for doing this directly with Cyrus and via proxy, we
see a ~ 20% loss in performance. Proxies written in C would definitely
perform better on such a high-throughput task but the IMAP communication
between client and server usually is an asynchronous background process
where a certain performance loss could be accepted or isn't event
noticed by the user.

* After testing with an iOS device connecting through the proxy, I had
to remove the COMPRESS=DEFLATE from the CAPABILITY response sent by the
server. Otherwise the client starts sending gzipped data which the proxy
currently cannot handle. The change is available in the github repository.

While there's still some more work and lots more testing to be done, I
just gained a little more confidence that the imaproxy app actually
works as expected and can cope with a significant number of connections
without utterly failing.

I'm keen on hearing your experience with it!

Kind regards,
Thomas


More information about the users mailing list