作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个生产系统,它使用 ActiveMQ (5.3.2) 将消息从服务器 A 发送到服务器 B。几周前,系统莫名其妙地开始花费 10 秒以上的时间来发送消息。重启生产者后,系统工作正常。
经过调查,我很确定这是由于生产者流量控制造成的。 (我有一个相当标准的 activemq 设置)。发生这种情况的前一天(由于其他原因)我的消费者软件运行不稳定,甚至有一段时间停止接受连接。所以我猜这触发了这个。 (令我困惑的是,一天后请求仍然受到限制)。
问题 - 我如何确认请求已被限制。我对服务器进行了堆转储——内存中是否有我可以查找的数据?
编辑:我发现以下内容:对于内存中的三个 WireFormatNegotiator 实例之一,WireFormatNegotiator.tcpNoDelayEnabled=false。我正在试图找出是什么造成了这一点。
第二(也是更重要的),有没有办法可以使用 JMX 来判断消息是否受到限制?我想设置 Nagios 警报,让我知道将来是否会发生这种情况。我应该使用 JMX 检查什么属性?
最佳答案
你可以 configure your producer client抛出 javax.jms.ResourceAllocationException 异常,然后可以检测/记录这些异常,等等。只需设置以下其中一项...
<systemUsage>
<systemUsage sendFailIfNoSpaceAfterTimeout="3000">
...OR...
<systemUsage sendFailIfNoSpace="true">
关于java - 检测ActiveMQ流控,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7490504/
我是一名优秀的程序员,十分优秀!