You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by "René Cordier (Jira)" <se...@james.apache.org> on 2020/12/30 03:51:00 UTC
[jira] [Closed] (JAMES-3484) Cassandra mailbox should group copies
[ https://issues.apache.org/jira/browse/JAMES-3484?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
René Cordier closed JAMES-3484.
-------------------------------
Fix Version/s: 3.6.0
Resolution: Fixed
> Cassandra mailbox should group copies
> -------------------------------------
>
> Key: JAMES-3484
> URL: https://issues.apache.org/jira/browse/JAMES-3484
> Project: James Server
> Issue Type: Bug
> Reporter: Benoit Tellier
> Priority: Major
> Fix For: 3.6.0
>
> Attachments: Screenshot from 2020-12-25 13-18-50.png
>
>
> On one of my production instances, I notice some copy operations are slow. Moving 60 messages takes around 2 seconds (~33ms per message).
> More interestingly, a total of 1042 Cassandra queries is generated! (~17 per messages)
> The moves is currently performed on a per message basis, sequencially.
> However, by grouping updates together we can:
> - Allocate a single MODSEQ thus saving on ModSeq generation
> - Allocate several UIDs at once by asking for a UID range
> - As we are no longer performing id generation for each message, we can parallelize the message insertion...
> - And the tables indexes (applicable flags, mailbox counters) can be grouped instead of being performed for each messages. Other table indexes updates can be further parallelized yielding further enhancements.
> In brief, according to the glowroot capture attached we can expect a 75% performance enhancement by:
> - Cassandra query volume reduction
> - Operation parallelization
> We also expect a positive impact on overall Cassandra performances from the above enhancements.
> Glowroot capture:
> {code:java}
> ASYNC
> Transaction type:
> Web
> Transaction name:
> /jmap
> Start:
> 2020-12-22 3:40:57.645 pm (+07:00)
> Duration:
> 2,085.1 milliseconds
> Breakdown (Main Thread): total (ms) count
> http request
> 0.46 1
> Breakdown (Auxiliary Threads): total (ms) count
> auxiliary thread
> 2,744.8 6,959
> jmapMethod
> 1,936.4 1
> cassandra query
> 50.2 1,042
> Breakdown (Async Timers): total (ms) count
> cassandra query
> 3,907.5 1,042
> JVM Thread Stats (Main Thread)
> CPU time: 0.42 milliseconds
> Blocked time: 0.0 milliseconds
> Waited time: 0.0 milliseconds
> Allocated memory: 18.5 KB
> JVM Thread Stats (Auxiliary Threads)
> CPU time: 489.6 milliseconds
> Blocked time: 0.0 milliseconds
> Waited time: 1,924.0 milliseconds
> Allocated memory: 17.6 MB
> {code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org