【问题标题】:ActiveMQ - Slow kaha DB access causing ActiveMQ to not respond fast enoughActiveMQ - 缓慢的 kaha 数据库访问导致 ActiveMQ 响应不够快
【发布时间】:2015-05-05 23:32:14
【问题描述】:

我有一个 wso2 ESB 与 activeMQ(持久消息传递)通信。有时,ESB 上的线程会堆积起来,因为所有线程都在等待 activeMQ 响应对其进行的各种调用。最终调用错误。

同时在 ActiveMQ 日志中,我看到很多“缓慢的 Kaha DB 访问”日志。一些例子:

  1. KahaDB 访问缓慢:清理耗时 5138
  2. KahaDB 访问速度慢:日志追加耗时:1635 毫秒,索引更新耗时 2330 毫秒

这是我们系统中的一个大问题,因为一旦 AMQ 停止响应足够快,我们就会锁定线程。似乎因为 IO/访问需要很长时间,activeMQ 停止响应我们的 ESB。由于我们继续尝试在 ActiveMQ 上排队消息(预期功能),我们打开越来越多的连接,使用越来越多的线程,直到线程被最大化。

几分钟后,我们发布的线程和 activeMQ 再次响应,但到那时对于我们的系统来说为时已晚,因为 ESB 由于备份流量和 activeMQ 冻结而失控。

有人遇到同样的问题吗?任何人都可以提供有关如何解决此问题的任何信息,我们将不胜感激。

谢谢

【问题讨论】:

    标签: java wso2 activemq wso2esb


    【解决方案1】:

    除非您绝对需要持久性,否则您可以尝试发送非持久性消息并将代理更改为非持久性。请参阅 ActiveMQ documentation,了解执行此操作的具体步骤。在这种情况下,代理不会将任何消息写入磁盘,而只会将它们保存在内存中。但是,如果代理崩溃,则意味着这些消息将丢失。

    否则,我建议您通过更换硬件直接解决 IO 性能问题,或者切换到 clustered ActiveMQ deployment 以更均匀地分散负载。

    【讨论】:

    • 谢谢,会试一试,告诉你进展如何。
    • 我将为两个最多的队列尝试非持久性,并让你知道它是如何进行的。该问题仅发生在生产环境中,所以我猜它可能与硬件有关,但由于硬件由两个不同的外部团队管理,这可能太麻烦了。
    • 原来是硬件相关的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2014-07-11
    • 1970-01-01
    • 2011-04-12
    • 1970-01-01
    • 2011-04-15
    • 2021-07-12
    • 1970-01-01
    • 2013-03-25
    相关资源
    最近更新 更多