gpt4 book ai didi

java - KahaDB db.data 和 ActiveMQ 5.6

转载 作者:搜寻专家 更新时间:2023-11-01 03:52:18 25 4
gpt4 key购买 nike

我正在寻找以下与 KahaDB 相关的问题的答案。

我有一个使用 ActiveMQ 的应用程序,该应用程序接收大约 500,000 到 100 万条消息,这些消息被写入 ActiveMQ 队列并由消费者接收。

我观察到 db.data 文件大小在几 KB 到近 600 或 700 MB 之间变化。

我注意到当 db.data 文件大小增加时,消息会卡住,迫使我关闭我的应用程序,重新启动应用程序以使新的消费者连接到代理以耗尽所有消息。

  1. 理想情况下,db.data 的大小应该是多少?如果一个应用程序同时生产和消费,无论消息的数量如何,我认为 db.data 的大小应该很小。

  2. 为什么有时文件大小会变大,是什么触发了 db.data 的文件大小变大?

我有 ActiveMQ 5.6,我每个月至少会看到这个问题 2 到 3 次。在运行平稳的代理中,我观察到 db.data 的文件大小以 KB 为单位,而不是 500 MB 或 700 MB。

这是示例 activemq.xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:amq="http://activemq.apache.org/schema/core" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd">
<!-- Allows us to use system properties as variables in this configuration file -->
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<value>file:${activemq.conf}/credentials.properties</value>
</property>
</bean>
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" dataDirectory="/foo/activemq_5.6/data">
<destinationPolicy>
<policyMap>
<policyEntries>
<policyEntry topic=">" producerFlowControl="true" memoryLimit="1mb">
<pendingSubscriberPolicy>
<vmCursor />
</pendingSubscriberPolicy>
</policyEntry>
<policyEntry queue=">" producerFlowControl="true" memoryLimit="1mb" useCache="false" />
</policyEntries>
</policyMap>
</destinationPolicy>
<managementContext>
<managementContext createConnector="true" />
</managementContext>
<persistenceAdapter>
<kahaDB directory="/foo/activemq_5.6/data/kahadb" />
</persistenceAdapter>
<systemUsage>
<systemUsage>
<memoryUsage>
<memoryUsage limit="64 mb" />
</memoryUsage>
<storeUsage>
<storeUsage limit="100 gb" />
</storeUsage>
<tempUsage>
<tempUsage limit="50 gb" />
</tempUsage>
</systemUsage>
</systemUsage>
<transportConnectors>
<transportConnector name="openwire" uri="tcp://0.0.0.0:61616" />
</transportConnectors>
</broker>
<import resource="jetty.xml" />
</beans>

最佳答案

通常,kahadb 目录包含尚未使用的消息段。如果段中有任何消息还没有被消费,它会保留整个段。所以如果你在任何队列中什么都没有,你通常不会在 kaha 目录中有太多的东西。

如果启用了 jetty 控制台,则可以使用它来查看哪些队列中有消息。

如果您有时有一些消耗缓慢的队列,您可能希望将段大小从其默认值(大约 33 兆)调整为更小的值以避免填满您的磁盘/达到配置文件的存储限制)

关于java - KahaDB db.data 和 ActiveMQ 5.6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22547136/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com