0

我正在使用 ActiveMQ 5.8.0,设置为使用 KahaDB 持久化消息。我在 ActiveMQ 使用大量内存进行相当简单的操作时遇到问题。

我已将包装堆空间 (Xmx) 设置为 1536m,将代理系统内存设置为 1024m。启动 ActiveMQ 时,它使用了相当多的内存,大约 100MB。然后,当我打开 ActiveMQ 控制台并尝试访问包含 700 条消息的错误队列时,奇怪的事情开始发生。内存使用率上升。向上。向上。直到它停止在 1,5GB 左右,但仍然没有显示队列。然后它会在那里停留几分钟,直到它因 java 堆空间的 outofmemoryerror 而失败(至少它在 xmx-memory 低一点的情况下发生了,现在它只等待几分钟)。消息很小,没有有效负载,只有几个用户定义的标头属性。没有办法 700 条这样的消息可以占 1400MB 的内存。

我还可以访问另一个 ActiveMQ 实例。这是 5.7.0,设置为使用 MSSQL 数据库进行持久性。在这里,我可以打开一个包含 50000 条待处理消息的队列,在大约 10 秒内在 Web 控制台中显示其中的 3000 条。

当我尝试连接 HawtIO 而不是 ActiveMQ 控制台时,我看不到内存使用量的急剧上升,尽管查看队列内容的速度仍然很慢,并且某些队列(包含 1000 条稍大的消息)我无法查看的内容。实际上,当在不同的环境(开发/测试)中进行更多检查时,我看到一个不会在开发环境中显示其内容的错误队列(带有 1200 条消息)将显示在测试环境中(带有 1900 条消息)。这没有意义。。

有谁知道什么会导致 ActiveMQ 5.8.0 的 Web 控制台耗尽所有内存?为什么即使使用 HawtIO,我也看不到相对较小队列的内容?我认为这是 ActiveMQ 的一些核心功能,在这一点上,我对它的实际运行情况感到非常震惊。

4

0 回答 0