我有一个使用ActiveMQ(5.3.2)将消息从服务器A发送到服务器B的生产系统。几个星期前,系统莫名其妙地开始花费10多秒来发送消息。系统重启后,系统运行良好。检测ActiveMQ流量控制
经过调查,我很确定这是由于生产者流量控制。 (我有一个相当标准的activemq设置)。发生此事的前一天(出于其他原因),我的消费者软件一直处于不正常行为状态,甚至一度停止接受连接。所以我猜这引发了这个。 (这确实让我感到困惑,一天之后请求仍然受到限制)。
问题 - 我如何确认请求被限制。我拿了服务器的堆转储 - 我可以查找内存中的数据吗?
编辑:我发现以下内容: 对于内存中的三个WireFormatNegotiator实例之一,WireFormatNegotiator.tcpNoDelayEnabled = false。我试图弄清楚这是什么。
第二个(也是更重要的),有没有一种方法可以使用JMX来判断消息是否被限制?我想建立一个Nagios警报,让我知道这是否会在未来发生。我应该使用JMX检查哪些属性?
很有必要知道 - 感谢。仍然希望有人对我的问题有更直接的回答。 –
请问,这是从客户端/监视器的角度来检测流量控制。如果你看到这些错误,那么生产者流量控制就会“踢”进来。如果你没有设置这些,那么send()将会阻塞,直到生产者可以恢复。 –
这很有帮助,谢谢 –