gpt4 book ai didi

java - ActiveMQ 从不删除 kahadb .log 文件;通过 JSP 界面看不到未决消息;如何发现罪魁祸首?

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

我们在 CentOS 上运行 ActiveMQ 5.7.0。大约 50 个 Java 程序写入和使用队列,大约一半来自本地主机,其余分散在远程客户端,大多数每个进程有一个消费者,但有四个有 32 个。

几天前,ActiveMQ 停止从 data/kahadb 中删除 .log 文件。如果重新启动,ActiveMQ 会从 kahadb 中删除所有内容,然后在运行期间不会删除任何其他内容。

通过 [host]:8161/admin/queues.jsp 的 Web 界面看不到任何待处理(即排队但未出队)的消息。 DLQ 为空,删除它不会影响问题。 (也从界面上收集到:所有连接都处于 Activity 状态,没有一个连接很慢,没有订阅者,没有网桥,没有调度程序。)

正在关注 http://activemq.apache.org/why-do-kahadb-log-files-remain-after-cleanup.html ,我得到了以下信息:

| TRACE | Last update: 236:28401525, full gc candidates set: [89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100 <[snip]>, 236 | org.apache.activemq.store.kahadb.MessageDatabase | ActiveMQ Journal Checkpoint Worker 2014-09-11 08:50:03,384 | TRACE | gc candidates after first tx:89:10178611, [] | org.apache.activemq.store.kahadb.MessageDatabase | ActiveMQ Journal Checkpoint Worker 2014-09-11 08:50:03,384 | TRACE | gc candidates: [] | org.apache.activemq.store.kahadb.MessageDatabase | ActiveMQ Journal Checkpoint Worker

其中 db-89.log 是 ActiveMQ 重启后创建的第一个日志文件,db-236.log 是最新的当前存在的文件。

ActiveMQ 日志中没有其他错误或警告。关于使用队列的程序,没有一致报告的异常。根据他们的日志,我公司在本地主机上的程序正在发布交易。如果第三方程序没有发布交易,我不知道如何找出来。

鉴于所有这些,我如何才能查明或缩小问题的可能原因?哪些附加信息会有用?

作为附加约束,访问客户端机器及其程序是一个业务问题。我在那里没有账户,管理员在不同的国家,这会减慢沟通速度。如果我必须联系他们,我想提前向他们提供所有可能的信息。

非常感谢。

最佳答案

我们通过调查 ActiveMQ 源代码来理解片段解决了这个问题:

gc candidates after first tx:89:10178611

原来,89 是日志文件名 (db-89.log),而 10178611 是文件中的偏移量。所以,我们转储了日志文件:

xxd -g1 db-89.log | less

然后我们对我们的偏移量进行了文本搜索(转换为十六进制)。在转储中,有带有挂起事务的队列的人类可读名称以及它来自的服务器。

我无权访问有问题的服务器或代码,但管理员非正式地告诉我,他们的开发人员“修复”了交易的关闭,无论修复是什么。这解决了问题。

关于java - ActiveMQ 从不删除 kahadb .log 文件;通过 JSP 界面看不到未决消息;如何发现罪魁祸首?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25783038/

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