ActiveMQ - 缓慢的 kaha 数据库访问导致 ActiveMQ 响应速度不够快
ActiveMQ - Slow kaha DB access causing ActiveMQ to not respond fast enough
我有一个与 activeMQ(持久消息传递)通信的 wso2 ESB。有时,ESB 上的线程堆积起来,因为所有线程都在等待 activeMQ 响应对它发出的各种调用。最终调用出错了。
同时在 ActiveMQ 日志中,我看到很多 "Slow Kaha DB access" 日志。一些例子:
- KahaDB 访问速度慢:清理耗时 5138
- 缓慢的 KahaDB 访问:日志追加耗时:1635 毫秒,索引更新耗时
2330 毫秒
这是我们系统中的一个大问题,因为一旦 AMQ 停止足够快的响应,我们就会锁定线程。似乎是因为 IO/access 花了很长时间,activeMQ 停止响应我们的 ESB。由于我们继续尝试在 ActiveMQ 上对消息进行排队(预期功能),我们打开越来越多的连接,使用越来越多的线程,直到线程达到最大值。
几分钟后,我们释放的线程和 activeMQ 再次响应,但到那时对我们的系统来说为时已晚,因为备份流量和 activeMQ 冻结导致 ESB 失控。
有人遇到同样的问题吗?任何人都可以提供有关如何解决此问题的任何信息,我们将不胜感激。
谢谢
除非您绝对需要持久性,否则您可以尝试发送非持久性消息并将代理更改为非持久性。请参阅 ActiveMQ documentation 了解执行此操作的精确步骤。在这种情况下,代理不会将任何消息写入磁盘,而只会将它们保存在内存中。但是,如果代理崩溃,则意味着这些消息丢失了。
否则,我建议您通过更换硬件直接解决 IO 性能问题,或者切换到 clustered ActiveMQ deployment 以更均匀地分配负载。
我有一个与 activeMQ(持久消息传递)通信的 wso2 ESB。有时,ESB 上的线程堆积起来,因为所有线程都在等待 activeMQ 响应对它发出的各种调用。最终调用出错了。
同时在 ActiveMQ 日志中,我看到很多 "Slow Kaha DB access" 日志。一些例子:
- KahaDB 访问速度慢:清理耗时 5138
- 缓慢的 KahaDB 访问:日志追加耗时:1635 毫秒,索引更新耗时 2330 毫秒
这是我们系统中的一个大问题,因为一旦 AMQ 停止足够快的响应,我们就会锁定线程。似乎是因为 IO/access 花了很长时间,activeMQ 停止响应我们的 ESB。由于我们继续尝试在 ActiveMQ 上对消息进行排队(预期功能),我们打开越来越多的连接,使用越来越多的线程,直到线程达到最大值。
几分钟后,我们释放的线程和 activeMQ 再次响应,但到那时对我们的系统来说为时已晚,因为备份流量和 activeMQ 冻结导致 ESB 失控。
有人遇到同样的问题吗?任何人都可以提供有关如何解决此问题的任何信息,我们将不胜感激。
谢谢
除非您绝对需要持久性,否则您可以尝试发送非持久性消息并将代理更改为非持久性。请参阅 ActiveMQ documentation 了解执行此操作的精确步骤。在这种情况下,代理不会将任何消息写入磁盘,而只会将它们保存在内存中。但是,如果代理崩溃,则意味着这些消息丢失了。
否则,我建议您通过更换硬件直接解决 IO 性能问题,或者切换到 clustered ActiveMQ deployment 以更均匀地分配负载。