具有ReplicatedLevelDB存储的ActiveMQ使日志文件的文件描述符保持打开状态,因此操作系统无法释放空间
我们使用的是ActiveMQ 5.11.1节点集群(由Zookeepers保护)。节点使用ReplicatedLevelDB存储。应用程序能够生成和使用消息,但从一段时间前开始,我们注意到一个非常奇怪的问题 似乎ActiveMQ日志已被删除,但它们的FD已打开(通过ActiveMQ Java进程),因此Linux无法清理这些文件。最后,我们有一个空间泄漏,这是很糟糕的具有ReplicatedLevelDB存储的ActiveMQ使日志文件的文件描述符保持打开状态,因此操作系统无法释放空间,activemq,leveldb,Activemq,Leveldb,我们使用的是ActiveMQ 5.11.1节点集群(由Zookeepers保护)。节点使用ReplicatedLevelDB存储。应用程序能够生成和使用消息,但从一段时间前开始,我们注意到一个非常奇怪的问题 似乎ActiveMQ日志已被删除,但它们的FD已打开(通过ActiveMQ Java进程),因此Linux无法清理这些文件。最后,我们有一个空间泄漏,这是很糟糕的 [root@server dirty.index#] lsof | grep -o "/home/.*" | grep dele
[root@server dirty.index#] lsof | grep -o "/home/.*" | grep deleted | sort | uniq
/home/activemq/activemq-data/000000126ecb3f49.log (deleted)
/home/activemq/activemq-data/00000012750b4590.log (deleted)
这只发生在主节点上。重新启动节点后,将选择一个新的主节点,并删除所有这些文件。新主人也有同样的问题
我们已经为ActiveMQ启用了TRACE
log-level-没有运气,没有可疑之处(或者我们遗漏了一些东西)。队列不大,最多5-6条消息。所有消息都很快被消耗掉。没有明显的错误消息。APM也没有显示任何可疑的东西
ReplicatedLevelDB配置:
ActiveMQ配置中没有最近的更改
我们现在陷入困境。我们还可以检查哪些内容?ActiveMQ中的LevelDB存储区已经被弃用了好几年,并且没有社区支持或维护。很可能您在实现中遇到了一个潜在的bug,该bug很可能不会得到修复,因为LevelDB可能会在5.17.0版本中被完全删除。如果您需要复制和HA,我建议您转移到KahaDB商店或查看ActiveMQ Artemis 因为它的价值,LevelDB早在2016年11月就被ActiveMQ弃用了。很好地总结了形势。考虑到这一点,我不确定你能找到多少帮助。
[root@server activemq-data#] lsof | grep -o "/home/.*" | grep deleted | wc -l
280