我经常在active.log文件中面对下面的WARN。不明白每个警告的含义是什么。有些人可以帮我理解这个以及如何解决
2017,20-07 06:11:12,051 |警告|临时存储限制为51200 mb (当前商店使用量为0 mb)。数据目录: /local/apps/apache-activemq-5.14.3/data只有5924 MB可用 空间。 - 重置为最大可用磁盘空间:5924 mb | org.apache.activemq.broker.BrokerService |主
2,2017-06-07 11:36:02,358 |警告|传输连接到:tcp://10.235.454.23:59053失败:java.io.EOFException | org.apache.activemq.broker.TransportConnection.Transport | ActiveMQ的 运输:tcp:///10.123.343.345:59053 @ 61616 2017-06-07 11:37:58,441 |警告|传输连接到:tcp://10.123.345.768:46840失败:java.io.EOFException | org.apache.activemq.broker.TransportConnection.Transport | ActiveMQ的 运输:tcp:///10.240.123.234:46840 @ 61616
3,2017-06-07 11:41:54,376 |警告| persistent =“false”,忽略 配置persistenceAdapter: KahaDBPersistenceAdapter [/local/apps/apache-activemq-5.14.3/data/kahadb] | org.apache.activemq.broker.BrokerService |主
答案 0 :(得分:0)
要解决此错误/警告,您应该将代理的临时存储限制限制为磁盘上可用的值。此值在代理的系统使用配置中通过apache-activemq-5.9.0-bin \ apache-activemq-5.9.0 \ conf \ activemq.xml中的tempUsage限制设置:
<systemUsage>
<systemUsage>
<memoryUsage>
<memoryUsage limit="64 mb"/>
</memoryUsage>
<storeUsage>
<storeUsage limit="100 gb"/>
</storeUsage>
<tempUsage>
<tempUsage limit="50 gb"/>
</tempUsage>
</systemUsage>
</systemUsage>
虽然代理可能在这种情况下首先执行ok,但它有可能导致意外的结果,例如IOExceptions,而不是在资源耗尽时触发Producer Flow Control。建议通过适当调整使用限制来解决这种情况。
根本原因
代理已请求分配比可用磁盘资源更多的磁盘资源。 在设置tempusage内存之前,请检查activemq所在的磁盘空间内存。
ActiveMQ提供了调整每个目标的内存使用量的机制
<policyEntry queue=">" producerFlowControl="false" memoryLimit="256mb">
我在队列名称中使用了通配符[&gt;用于递归匹配从此名称开始的任何目标]在上述配置中它适用于任何队列 无论如何,你可以使用
每个目标 - 为目标设置内存限制,例如,要将FOO.BAR.TEST队列中的内存量限制为10 MB,请定义如下所示的策略条目:
<destinationPolicy>
<policyMap>
<policyEntries>
<policyEntry topic="FOO.BAR.TEST" memoryLimit="5MB" />
</policyEntries>
</policyMap>
</destinationPolicy>