[ 
https://issues.apache.org/jira/browse/JAMES-3086?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17532065#comment-17532065
 ] 

Benoit Tellier commented on JAMES-3086:
---------------------------------------

Hello, I am getting a fresh look at this:

 - elastic threads are not related to elasticsearch but is the kind of thread 
we use in reactor (our reactive library) to handle potentially blocking taks
 - Those elastic threads sits there doing nothing. Waiting...
 - Use of elastic is deprecate because it just starts too many threads, reactor 
community prefer using bounded elastic. Such a move should be done in James 
too. A SEDA architecture can be used to prevent deadlocks.
 - As Cassandra 3.x is not fully reactive, paging can block. We thus 
aggressively switch threads to avoid blocking in parralel threads. A migration 
to a true reactive driver (4.x) would allow us to solve this, dramatically 
reducing the count of allocated elastic threads. This would also decrease 
scheduling overhead, context switches...
 - Busy threads are the SMTP threads as well as the spooler threads (mail 
processing) which essentially blocks. This would benefit from a migration to 
pure reactive code just like we did for the IMAP protocol. I would be happy to 
get sponsored doing this!

I suggest you use https://github.com/jvm-profiling-tools/async-profiler when 
reporting "over exhausted CPU", its flame graphs allows knowing exactly what 
the CPUs are doing which is invaluable. This is further more a really easy to 
use tool.


> Mail Server Load Test giving very low throughput
> ------------------------------------------------
>
>                 Key: JAMES-3086
>                 URL: https://issues.apache.org/jira/browse/JAMES-3086
>             Project: James Server
>          Issue Type: Bug
>          Components: POP3Server, SMTPServer
>    Affects Versions: 3.3.0
>            Reporter: Rashid Mahmood
>            Priority: Blocker
>         Attachments: executors-waiting-to-acquire.png, 
> image-2020-03-04-09-30-30-054.png, threaddump.txt
>
>
> After functional tests, we are performing load tests against James Server 
> setup with Casandra/Elasticsearch(cassandra-ldap-guice) packaging option. 
> With JMeter constant throughput timer of 300 SMPT requests per seconds we are 
> achieving around 10 requests per seconds. Each Request is with 100KB 
> attachment. Observed CPU of the machine (where MailServer running) was over 
> exhausted.
> Many of the threads in thread dump were in awaiting notifications state.
> I see around 100 threads from Elastic search, is there any configuration to 
> control this?
> Where is the bottleneck? 
> !image-2020-03-04-09-30-30-054.png!
>  
> See the thread dump in attachment.



--
This message was sent by Atlassian Jira
(v8.20.7#820007)

---------------------------------------------------------------------
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