【发布时间】:2015-07-20 18:10:28
【问题描述】:
我们有基于 java 的消息处理系统,其中有近 25 个不同的队列和一个主题。我们将此系统设置为最大内存使用量为 2GB,正常情况下每秒处理 40 条消息。该系统可以正常工作几天,然后开始在内存上达到峰值,然后达到极限。
在我们的分析中,我们发现 MemoryUsage 是导致此原因的关键,下面是其中一个使用近 50% 内存的队列的堆转储的泄漏可疑堆栈跟踪。较大量的消息可能会使队列负载过重。为该系统设置 MemoryUsage 的最佳配置是什么?
519,955,448 (62.85%) [72] 8 org/apache/activemq/usage/MemoryUsage 0x80d8d180
519,843,456 (62.84%) [16] 2 java/util/concurrent/CopyOnWriteArrayList 0x80d8d210
519,843,392 (62.84%) [352] 89 array of java/lang/Object 0x822cd2e0
411,721,616 (49.77%) [72] 9 org/apache/activemq/usage/MemoryUsage 0x83833378
411,721,248 (49.77%) [16] 2 java/util/concurrent/CopyOnWriteArrayList 0x83835898
411,721,184 (49.77%) [8] 2 array of java/lang/Object 0x8383a730
411,718,600 (49.77%) [336] 33 org/apache/activemq/broker/region/Queue 0x83833120
411,693,720 (49.77%) [16] 2 org/apache/activemq/store/kahadb/KahaDBTransactionStore$1 0x838353e0
411,693,256 (49.77%) [24] 3 org/apache/activemq/store/kahadb/KahaDBTransactionStore 0x80d76aa0
411,689,856 (49.76%) [280] 37 org/apache/activemq/store/kahadb/KahaDBStore 0x80d74de0
358,088,168 (43.29%) [104] 14 org/apache/kahadb/journal/Journal 0x80d76790
356,119,216 (43.05%) [48] 1 java/util/concurrent/ConcurrentHashMap 0x80d773c0
356,119,168 (43.05%) [64] 16 array of java/util/concurrent/ConcurrentHashMap$Segment 0x80d8e628
【问题讨论】:
标签: activemq