java - Apache ActiveMQ 临时存储限制警告?

标签 java apache tcp activemq

我经常在 active.log 文件中遇到以下 WARN 问题。不明白每个警告到底意味着什么。有人可以帮助我理解这个问题以及如何修复

1, 2017-06-07 11:11:12,051 | WARN | Temporary Store limit is 51200 mb (current store usage is 0 mb). The data directory: /local/apps/apache-activemq-5.14.3/data only has 5924 mb of usable space. - resetting to maximum available disk space: 5924 mb | org.apache.activemq.broker.BrokerService | main

2, 2017-06-07 11:36:02,358 | WARN | Transport Connection to: tcp://10.235.454.23:59053 failed: java.io.EOFException | org.apache.activemq.broker.TransportConnection.Transport | ActiveMQ Transport: tcp:///10.123.343.345:59053@61616 2017-06-07 11:37:58,441 | WARN | Transport Connection to: tcp://10.123.345.768:46840 failed: java.io.EOFException | org.apache.activemq.broker.TransportConnection.Transport | ActiveMQ Transport: tcp:///10.240.123.234:46840@61616

3, 2017-06-07 11:41:54,376 | WARN | persistent="false", ignoring configured persistenceAdapter: KahaDBPersistenceAdapter[/local/apps/apache-activemq-5.14.3/data/kahadb] | org.apache.activemq.broker.BrokerService | main

最佳答案

要解决此错误/警告,您应该将代理的临时存储限制限制为磁盘上可用的值。该值是通过 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>

虽然代理在这种情况下最初可能执行正常,但它有可能导致意外结果,例如 IOException,而不是在资源耗尽时触发生产者流控制。建议通过适当调整使用限制来解决这种情况。

根本原因

代理已请求分配比可用资源更多的磁盘资源。 在设置临时内存之前,请检查您的activemq所在的磁盘空间内存。

ActiveMQ 提供了调整每个目标的内存使用情况的机制

<policyEntry queue=">" producerFlowControl="false" memoryLimit="256mb">

我在队列名称中使用了通配符[>用于递归匹配从此名称开始的任何目的地]在上面的配置中它适用于任何队列 无论如何,对于每个目的地,您都可以使用

每个目的地 - 设置目的地的内存限制,例如,要将 FOO.BAR.TEST 队列上的内存量限制为 10 MB,请定义如下策略条目:

<destinationPolicy>
    <policyMap>
        <policyEntries>
            <policyEntry topic="FOO.BAR.TEST" memoryLimit="5MB" />
        </policyEntries>
    </policyMap>
</destinationPolicy>

关于java - Apache ActiveMQ 临时存储限制警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44413417/

相关文章:

java - 向数组插入不同类型的数据 - Android

java - Prefuse 中的 SpecifiedLayout 不起作用

java - 如何通过 Jetty 服务器处理程序设置应用程序上下文的属性

apache - 如何即时更新 .htaccess 以有条件地 gzip

html - 找不到使用 Apache Tomcat 7.0 的 Web 应用程序的 CSS

java - 可以比较LinkedHashMap的比较器

c# - NetworkStream.Write数据似乎没有到达接收套接字

sockets - 什么是 TCP 连接的开销流量(加上 TCP 说明)?

.net - 向/从 GRPS 设备传输/接收数据

python - Matplotlib 子进程/后端问题