[jira] [Commented] (QPID-7830) Heap dominated by duplicates of common routing values / header values etc

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

[jira] [Commented] (QPID-7830) Heap dominated by duplicates of common routing values / header values etc

JIRA jira@apache.org

    [ https://issues.apache.org/jira/browse/QPID-7830?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16053913#comment-16053913 ]

Rob Godfrey commented on QPID-7830:
-----------------------------------

One approach might be something like keeping a pool of string which are likely to be reused (such as queue names, exchange names, etc), and checking in the pool to find the shared copy.  I'd be hesitant to try to pool routing keys explicitly since by design these may pattern match... however for the common routing-key=queue-name case, simply caching the queue names would be sufficient.

Historically we did cache short string values, but this was removed at some point as I don't think it was adding much value.

> Heap dominated by duplicates of common routing values / header values etc
> -------------------------------------------------------------------------
>
>                 Key: QPID-7830
>                 URL: https://issues.apache.org/jira/browse/QPID-7830
>             Project: Qpid
>          Issue Type: Bug
>          Components: Java Broker
>            Reporter: Keith Wall
>
> When used for store and forwarding, in some use cases the Broker's heap can become dominated by duplicates of common values such as routing information (e.g. {{amq.direct}} or an application's queue name) or common header values (e.g a application/octet-stream or an application's user id).
> On the 0-8..0-91 paths, every enqueued message gets its own {{MessagePublishInfo}} referencing its own {{AMQShortString}} exchange and routing keys.  For some use-cases, these are drawn from a small set. On the AMQP 1.0 path, {{Properties#to}} is an example.   0-10 is probably affected too.
> This unnecessarily increases the heap requirements of the Broker.
> The Broker should adopt a sensible intern/caching policy.  Note that in AMQP 1.0, values which are {{Symbols}} have their underlying String automatically interned.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Loading...