[
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: [email protected]
For additional commands, e-mail: [email protected]