首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >KahaDB db.data和ActiveMQ 5.6

KahaDB db.data和ActiveMQ 5.6
EN

Stack Overflow用户
提问于 2014-03-20 23:16:07
回答 1查看 1.9K关注 0票数 4

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

我有一个使用ActiveMQ的应用程序,该应用程序接收大约50万到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文件:

代码语言:javascript
复制
<?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>
EN

回答 1

Stack Overflow用户

发布于 2014-05-14 00:34:53

通常,kahadb目录中有尚未使用的消息段。如果段中有任何尚未被消耗的消息,它将保留整个段。因此,如果在任何队列中没有任何内容,通常在kaha目录中就不会有太多内容。

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

如果有时某些队列消耗得很慢,您可能希望将段大小从默认的(大约33 meg)调整为更小的大小,以避免填充磁盘/从配置文件中触及存储限制)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22547136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档