[ 
https://issues.apache.org/jira/browse/JAMES-3816?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Benoit Tellier closed JAMES-3816.
---------------------------------
    Resolution: Fixed

> Limit IMAP concurrent requests
> ------------------------------
>
>                 Key: JAMES-3816
>                 URL: https://issues.apache.org/jira/browse/JAMES-3816
>             Project: James Server
>          Issue Type: Improvement
>          Components: IMAPServer
>            Reporter: Benoit Tellier
>            Priority: Major
>          Time Spent: 1h 20m
>  Remaining Estimate: 0h
>
> h2. Context
> In James 3.7.0 IMAP concurrency model was based on the thread pool model: a 
> pool of (eg) 20
> threads conducts 20 blocking tasks simultaneously.
> This lead to resource usage inefficiency: to handle 1000 requests at a given 
> time, we need 1000 threads
> and OS threads are expensive.
> However, this also put some concurrency control in place that protects the 
> IMAP server of bursts as no
> more requests than the count of threads could be processed.
> In JAMES-3737 we migrated to a reactive model. IMAP stack had been 
> re-implemented to be asynchronous. A
> few threads (typically matching the count of CPU) would carry out an 
> arbitrarily large amount of IMAP
> requests simultaneously. This is efficient resource wise, but there is no 
> more some concurrency control
> mechanisms in place.
> On a production environment, I notice some bursts of a few seconds where an 
> Apple mail client fires thousands
> of IMAP requests, which exhaust server resources: S3 connections, Cassandra 
> queries times out at consistency serial.
> h2. Solution
> Put back concurrency control on top of the IMAP reactive stack.
> We can take inspiration from the Cassandra driver throttlers to do so:
> * Defines a maximum number of concurrent requests
> * Have a queue for request delayed because maximum execution level is exceeded
> * Once executed, execution of other requests are triggered
> * If exceeding the queue size requests are rejected



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org

Reply via email to