You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@activemq.apache.org by "Martin Lichtin (JIRA)" <ji...@apache.org> on 2016/05/11 13:26:12 UTC

[jira] [Updated] (AMQ-6239) Performance issue in PrioritizedPendingListIterator

     [ https://issues.apache.org/jira/browse/AMQ-6239?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Martin Lichtin updated AMQ-6239:
--------------------------------
    Attachment: AMQ-6239-flight-recorder.jpg

Would it be possible the change goes into the next release?
The issue wastes an amazing amount of CPU, as can be seen for example by attached JFR.

> Performance issue in PrioritizedPendingListIterator
> ---------------------------------------------------
>
>                 Key: AMQ-6239
>                 URL: https://issues.apache.org/jira/browse/AMQ-6239
>             Project: ActiveMQ
>          Issue Type: Improvement
>          Components: Broker
>    Affects Versions: 5.12.2
>            Reporter: Martin Lichtin
>            Assignee: Timothy Bish
>             Fix For: 5.14.0
>
>         Attachments: AMQ-6239-flight-recorder.jpg, AMQ-6239-yourkit-1.jpg, PrioritizedPendingList.java.patch
>
>
> Sending and consuming 5000 messages to/from a queue, one can see heavy CPU use on the broker side (v 5.12.2).
> Yourkit shows 
> PrioritizedPendingList$PrioritizedPendingListIterator.<init>
> as a hot spot method. It calls ArrayList.add(Object) around 12 mio times.
> Situation is that FilePendingMessageCursor.isEmpty() iterates over in-memory messages and therefore (as it is a prioritized queue) uses PrioritizedPendingListIterator which uses OrderedPendingList.getAsList() which overall turns out to be an expensive method as it converts the self-managed linked list to a Java ArrayList and then this list is filled into another ArrayList managed by PrioritizedPendingListIterator.
> PrioritizedPendingListIterator could be improved to walk the priority lists via OrderedPendingList iterators, as these are implemented efficiently. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)