Qihong Xu created ARTEMIS-2214:
----------------------------------

             Summary: Cache durable&priority in PagedReference to avoid blocks 
in consuming paged messages
                 Key: ARTEMIS-2214
                 URL: https://issues.apache.org/jira/browse/ARTEMIS-2214
             Project: ActiveMQ Artemis
          Issue Type: Bug
          Components: Broker
    Affects Versions: 2.6.3
            Reporter: Qihong Xu


We recently performed a test on artemis broker and found a severe performance 
issue.

When paged messages are being consumed, decrementMetrics in 
QueuePendingMessageMetrics will try to ‘getMessage’ to check whether they are 
durable or not. In this way queue will be locked for a long time because page 
may be GCed and need to be reload entirely. Other operations rely on queue will 
be blocked at this time, which cause a significant TPS drop. Detailed stacks 
are attached below.

This also happens when consumer is closed and messages are pushed back to the 
queue, artemis will check priority on return if these messages are paged.

To solve the issue, durable and priority need to be cached in PagedReference 
just like messageID, transactionID and so on. I have applied a patch to fix the 
issue. Any review is appreciated.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to