[
https://issues.apache.org/jira/browse/JAMES-3870?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Benoit Tellier closed JAMES-3870.
---------------------------------
Resolution: Fixed
> Each IMAP response line is a distinct TCP packet
> ------------------------------------------------
>
> Key: JAMES-3870
> URL: https://issues.apache.org/jira/browse/JAMES-3870
> Project: James Server
> Issue Type: Improvement
> Components: IMAPServer
> Reporter: Benoit Tellier
> Priority: Major
> Fix For: 3.8.0
>
> Attachments: master-list-responses-with-flush.png,
> pr-list-responses-without-flush.png
>
> Time Spent: 0.5h
> Remaining Estimate: 0h
>
> Today each Imap response line is transmitted in a distinct TCP packet.
> This causes a lot of network overhead as
> => TCP headers are added for each response line. To give an idea a LIST
> response line is 35 bytes long but result in a 101 bytes TCP frame so a 188%
> overcost....
> => TCP ack are conducted for each line independently. An ACK is 66 bytes,
> This is especially problematic for LIST, FETCH commands that actually result
> in many (100, 1000, maybe millions) response lines.
> See attach screenshot: master-list-responses-with-flush.png demonstrating
> this.
> We should try to limit the calls to "flush" with Netty, and force the flush
> only once per IMAP command (at the end of processing). Netty is free to
> transmit some data earlier if it's buffer states requires it.
> The entire mailbox list take 1 packet to transmit (1420 btes total for 41
> mailboxes so ~35 bytes per mailbox) and a single ACK (66 bytes).
> See attach screenshot: pr-list-responses-without-flush.png demonstrating this.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]