MQ故障解决
大家好!
前段时间在客户生产平台部署一套MQ与公司内部的MQ进行数据传输,但是发现通道状态经常retrying。
一、故障的描述
1、ping对端的IP,telnet对端的端口都很正常。
2、MQ通道的启动正常,通过tcpdump host $IP -X -s 0,能够看到TCP的3次握手和MQ通道自己的启动信息。
3、MQ通道启动以后,状态变为RUNNING,子状态变为MQGET。过了5分钟,发送通道向接受通道发送一个确认包,正常情况下接受通道应该会有回应,但是现在并没有回应。
4、等待一段时间MQ通道状态虽然为RUNNING,但是子状态已经由MQGET变为received,说明MQ的发送通道等待接受由接受通道传回的通道确认信息。
5、MQ通道启动之后过9分钟就会自动关闭,并重新启动,并在MQ日志中产生如下内容:
2016年09月11日 22时31分02秒 - Process(73971.1) User(mqm) Program(runmqchl) Host(XXXX)
AMQ9259: 来自主机“111.111.111.111(1400)”的连接超时。说明:
来自主机“111.111.111.111(1400)”通过 TCP/IP 进行的连接超时。 操作: select() [TIMEOUT] 360 seconds 调用超时。检查以找到不能在预期时间内接收数据的原 因。改正问题。重新连接通道,或者等待重试通道以使其自己重新连接。二、原因
这是由于客户的网络具有连接90秒以内无数据传输就被端口的网络限制。
三、解决办法
针对以上的问题,修改MQ发送通道和接受通道的HBINT参数,我把心跳的间隔修改为58秒。