ActiveMQ - 慢速kaha数据库访问导致ActiveMQ响应不够快

时间:2015-05-04 20:03:49

标签: java wso2 activemq wso2esb

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

同时在ActiveMQ日志中,我看到很多"慢卡哈数据库访问"日志。一些例子:

  1. 缓慢的KahaDB访问:清理需要5138
  2. 慢速KahaDB访问:Journal附加花费:1635毫秒,索引更新花了 2330毫秒
  3. 这是我们系统中的一个大问题,因为一旦AMQ足够快地停止响应,我们就会锁定线程。似乎因为IO /访问花了这么长时间,activeMQ停止响应我们的ESB。由于我们继续尝试在ActiveMQ(预期功能)上对消息进行排队,因此我们使用越来越多的线程来打开越来越多的连接,直到线程被最大化为止。

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

    任何人都面临同样的问题?任何人都可以提供有关如何解决此问题的任何信息表示赞赏。

    由于

1 个答案:

答案 0 :(得分:0)

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

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