如何从消息存储库耗尽中恢复?

时间:2012-01-02 09:08:45

标签: activemq recovery cluster-computing

当activemq代理被消息淹没或消费者失败时,一旦达到某些(可配置的)限制,它将停止接受消息。在Broker Networks中,这种效应可以消除整个集群。

我目前正在使用内存限制的默认配置,并遇到以下行为:

  1. 消费者失败或变得非常缓慢(已知问题)
  2. 经纪人A(消费者连接的那个)被填满并停止接受消息
  3. 所有其他经纪人都填满并停止接受消息
  4. 群集已基本停止
  5. 如果消费者现在重新联机,它将尝试重新连接到其中一个群集节点,但节点将不接受连接,因为这会创建因代理已满而无法处理的咨询消息。

    我如何配置内存限制,以便限制和阻止我的生产目的地,但经纪人仍然可以接受建议,以便我的消费者可以撤销?

1 个答案:

答案 0 :(得分:0)

您应该能够使用producerFlowControl来减缓生产者的速度,以免压倒您的经纪人。话虽这么说,这是默认启用的,所以你可能已经使用它了......

我会尝试这样的事情(假设一个8GB的盒子左右)......

  • 在任何地方使用failover传输(代理/客户端连接)
  • 将JVM堆增加到4 GB
  • 大幅提高systemUsage限制(memoryUsage 3gb,storeUsage / tempUsage = 10 gb)
  • 在主题和队列上启用生产者流控制
    • 将内存限制设置为2GB除以主题+队列
    • 的总数
    • 换句话说,这应该总是小于memoryUsage限制
    • 从生产者流程控制中排除咨询主题(它们可能已经存在)

应该限制生产者并为您的系统留出资源以运行/恢复/接受消费者连接......