Difference between revisions of "IMAP NIO"

(Created page with "NIO implementation helps reduce the mailboxd memory footprint with a small CPU overhead. NIO eliminates the need of 1 (IMAP connection)-to-1 (server thread) mapping and helps ...")
 
Line 16: Line 16:
  
 
Trace logging can be enabled for NIO for basic troubleshooting purposes. Enable Trace logging at the account level with '''zmprov aal account zimbra.imap trace'''.
 
Trace logging can be enabled for NIO for basic troubleshooting purposes. Enable Trace logging at the account level with '''zmprov aal account zimbra.imap trace'''.
 +
 +
{{Article_Footer|ZCS 8.0.x|12/07/12}}
 +
 +
[[Category:ZCS 8.0]]

Revision as of 20:07, 7 December 2012

NIO implementation helps reduce the mailboxd memory footprint with a small CPU overhead. NIO eliminates the need of 1 (IMAP connection)-to-1 (server thread) mapping and helps reduce the memory footprint of the ZCS server. It is useful when there are many concurrent IMAP users. The exact benefit depends on the number of IMAP users/server and number of live connections/users.

The saving is linear to the number of active IMAP connections that are in a single mailbox server.

Example for 10,000 concurrent IMAP accounts:

With NIO: If there are 10,000 IMAP accounts, each of the IMAP accounts has an IMAP client which maintains 3 to 4 connections. There are at most 100 to 200 Java threads required in the mailboxd process to handle requests from those clients. If one thread uses 256k memory, it uses 25 to 50MB Java memory.

Regarding the CPU and depending on the load, the overhead usage can range from 0 to 20%. Since ZCS is not CPU bounded, the CPU increase should not be a significant factor to impact the client side response time.

Without NIO: If there are 10,000 IMAP accounts, each of the IMAP accounts has an IMAP client which maintains 3 to 4 connections. There are 10,000*3 or 10,000*4 Java threads required in the mailboxd process to handle requests from those clients. If one thread uses 256k memory, it uses 7,500MB to 10,000MB of Java memory.

Enabling NIO and Trace Logging

NIO implementation is enabled by default, with the setting of True. If you want to disable NIO, change the zmlocalconfig attribute nio_imap_enabled to False.

Trace logging can be enabled for NIO for basic troubleshooting purposes. Enable Trace logging at the account level with zmprov aal account zimbra.imap trace.

Verified Against: ZCS 8.0.x Date Created: 12/07/12
Article ID: https://wiki.zimbra.com/index.php?title=IMAP_NIO Date Modified: 2012-12-07



Try Zimbra

Try Zimbra Collaboration with a 60-day free trial.
Get it now »

Want to get involved?

You can contribute in the Community, Wiki, Code, or development of Zimlets.
Find out more. »

Looking for a Video?

Visit our YouTube channel to get the latest webinars, technology news, product overviews, and so much more.
Go to the YouTube channel »

Jump to: navigation, search