activemq 内存
为了有效使用ActiveMQ,了解ActiveMQ如何管理内存和磁盘资源以处理非持久性消息和持久性消息非常重要。
ActiveMQ具有三个关键参数,需要对其进行检查。
- 临时使用百分比
- 这是已用于假脱机非持久消息的已分配磁盘存储的百分比
- 非持久性消息是无法在代理重新启动后幸存的消息
- 店铺使用率
- 这是已用于存储持久性消息的已分配磁盘空间的百分比
- 内存使用率
- 这是已用于跟踪目标,高速缓存消息等的代理分配内存的百分比。此值必须小于-Xmx(最大JVM堆大小)
本博客试图阐明如何计算单个节点ActiveMQ代理实例的存储,温度和内存使用率。 我们使用ActiveMQ版本5.8.0进行此说明。
一旦清楚了ActiveMQ如何操作这些值,便可以使用关键配置设置对ActiveMQ进行微调,以处理以下用例。
- 大量目的地(队列/主题)
- 可以根据需要创建/删除目的地
- 消费缓慢
- 当消费者无法跟上消息的生成速度时,这是一个巨大的问题。
- 讯息爆发
- 在短时间内Swift涌入大量具有巨大有效负载大小的消息
- 资源利用不当
- 很少有目的地消耗资源而导致其他人挨饿
扩展策略
如果您想知道如何水平调整ActiveMQ,请参考Bosanac Dejan创建的幻灯片。 你可以在这里找到
它包含不同的ActiveMQ拓扑,除了调整ActiveMQ的各种参数外,还可以有效地用于满足批量吞吐量。 我发现它非常有用。
让我们继续深入……
以下XML代码段来自配置activemq.xml。 为memoryUsage,storeUsage和tempUsage指定的值仅用于讨论目的。
<systemUsage>
<systemUsage>
<memoryUsage>
<memoryUsage limit="256 mb"/>
</memoryUsage>
<storeUsage>
<storeUsage limit="512 mb"/>
</storeUsage>
<tempUsage>
<tempUsage limit="256 mb"/>
</tempUsage>
</s