MQ队列堵塞无法读取经验总结

时间:2024-10-06 23:33:14

问题现象:

1号发生本地来帐队列无法读取消息的问题,导致来帐报文均无法正常处理。

原因分析:

应用系统没有修改或上包,昨天交易和消息读取还是一切正常,mbfe的状态也是正常,mq的状态正常,以上正常可以排除系统问题和版本配置问题。

今天出现和今天发生交易的特殊性或许有关,尝试读取队列中排队的消息失败(/opt/mqm/samp/bin/amqsbcg qname qmgrname 查看不清理;/opt/mqm/samp/bin/amqsget qname qmgrname 查看并清理)。

初步认定为传输消息的特殊性导致,特殊性1,报文损坏导致(其他的报文正常收发可以排除可能),特殊性2:报文过大导致无法读取(由于无法读取消息,所有看不到队列的信息)。但可以通过对mq的属性配置进行检查来排除,特殊性3:通道状态异常,操作系统异常等(经环境检查可以排除这种可能)。

解决办法:

对MQ的配置属性进行排查,发现服务通道的消息的最大消息长度大小为4M,而其他通道配置位100M,配置不一致,修改属性后重启mq管理器,问题解决。

后续增加通道监控策略,包括通道状态、队列深度等。