- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在寻找以下与 KahaDB 相关的问题的答案。
我有一个使用 ActiveMQ 的应用程序,该应用程序接收大约 500,000 到 100 万条消息,这些消息被写入 ActiveMQ 队列并由消费者接收。
我观察到 db.data 文件大小在几 KB 到近 600 或 700 MB 之间变化。
我注意到当 db.data 文件大小增加时,消息会卡住,迫使我关闭我的应用程序,重新启动应用程序以使新的消费者连接到代理以耗尽所有消息。
理想情况下,db.data 的大小应该是多少?如果一个应用程序同时生产和消费,无论消息的数量如何,我认为 db.data 的大小应该很小。
为什么有时文件大小会变大,是什么触发了 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/
我使用带有 KahaDB 的 ActiveMQ 5.4 作为消息存储。 在将消息(持久性为真)发布到具有持久订阅者的主题时,即使消息被分派(dispatch)到订阅者,持久性存储也在增加。因此,由于消
我的任务是调查 db-*.log 文件未清除的原因。 从我通过大量搜索发现的结果来看,一切都指向仍在队列中的消息。我已经查看了所有配置主题的队列中的 hawtio,队列大小为零。 根据我的理解,理论上
在 ActiveMQ KahaDB 文档中,它提到您可以存档 KahaDB 数据文件,以便以后需要时可以重播。然而,通过一些搜索和查看他们的文档和 ActiveMQ in Action 的草稿副本,我
我正在尝试在一个相对简单的工作队列用例中使用 ActiveMQ。我有一个队列,有一个简单的生产者和消费者。我的问题是我做错了什么不断使数据库锁定?这是我不断收到的消息: 14/04/05 18:14:
我正在尝试使用 ActiveMQ 5.8.0在我的项目中。有两种不同的存储配置,KahaDB和 LevelDB .根据问题的不同,Kaha 可以比 Level 快,或者 Level 可以比 Kaha
我正在从 KahaDB 更改为 MKahaDB。因此,将我的一些队列分配到不同的目的地。但我想将旧队列的数据迁移到新创建的目的地。有谁知道,我该怎么做? 最佳答案 现在迁移的唯一方法是使用您想要的 m
我正在本教程中尝试将ActiveMQ与Tomcat集成 How to embed ActiveMQ in Tomcat 启动服务器时,我收到无法创建目录“ activemq-data \ localh
我有以下 ActiveMQ Broker 的 Spring 配置:
我向队列发送了 1.000.000 条对象消息,我的 kahadb 的 db.data 文件变成了 480 mb。然后我的消费者开始接收消息。一段时间后消费完成,队列中的所有消息都到达了目标。但是当我
在我的开发机器上本地启动/停止 ActiveMQ (5.6) 我刚刚运行 ./activemq start和 ./activemq stop分别。 在我们的 QA 机器上,我们将其作为服务安装并运行
我需要通过启用 kahadb 来启用 activemq 嵌入式代理的本地持久性。我如何在 bean xml 文件中配置 kahadb。
我正在尝试使用 JDBC 持久性设置以下代理: 启动时,我得到: java.lang.NoClassDefFoundEr
我正在寻找以下与 KahaDB 相关的问题的答案。 我有一个使用 ActiveMQ 的应用程序,该应用程序接收大约 500,000 到 100 万条消息,这些消息被写入 ActiveMQ 队列并由消费
我们在 CentOS 上运行 ActiveMQ 5.7.0。大约 50 个 Java 程序写入和使用队列,大约一半来自本地主机,其余分散在远程客户端,大多数每个进程有一个消费者,但有四个有 32 个。
我是一名优秀的程序员,十分优秀!