Details
-
Improvement
-
Status: Open
-
Minor
-
Resolution: Unresolved
-
qpid-java-broker-8.0.5
-
None
-
None
Description
Although QPID-8547 introduced configurable parameters for CoalescingCommitter, BDB log is flushed to disc on every message. That is caused by calling future.get() inside of org.apache.qpid.server.txn.AsyncCommand.complete(). Such call forces broker to wait until CoalescingCommiter calls #CommitThread#processJobs() making the operation effectively sync instead of async (every message triggers processJobs() and data flush).
To improve overall performance we suggest to add batching mode for CoalescingCommitter, which would consider BDBVirtualHost parameters and flush data in chunks of size ${qpid.broker.bdbCommiterNotifyThreshold} or every ${qpid.broker.bdbCommiterWaitTimeout} ms (whatever comes first).