某運營商系統MQ訊息中介軟體連線中斷故障
一、問題現象描述
那是某年某日某日下午4:30 中介軟體工程師收到現場工程師電話反饋說運營商系統的MQ訊息中介軟體這幾天持續發生問題,問題定位不明。問題現象是應用程式傳送訊息給Websphere MQ訊息中介軟體返回異常,導致訊息傳送不出去。最後還是現場工程師透過將應用程式斷開MQ的異常連線,才恢復正常。
二、系統環境資訊
MQ 執行環境資訊,如下表所示
三、問題原因分析
透過現場工程師反饋當問題發生時,他們檢查過Webpshere MQ的服務健康執行良好,問題時間點內MQ佇列通道狀態都是執行狀態,佇列深度也沒有出現訊息積壓的情況。基於現場工程師反饋的情況,我們讓現場工程師提取問題發生點的傳送方應用日誌與接收方的MQ相關的日誌過來,並對日誌做如下分析。
1、
應用連線MQ佇列通道異常
應用日誌分析情況
DEBUG] [2017-12-13 14:14:33,657] [SocketMsgSndrThread] [com.boco.gcp.common.msgsrvis.srvis.SocketCollectorSrvis] - [向客戶端[XX.XX.XX.XX:9997/gcp_alarm]傳送資料:<AlarmStart>
IntVersion:1.0
AlarmUniqueId:-6806507528009776145
********************************中間部分資訊省略*********************************
NmsAlarmId:
AlarmTitle:[alarmdata][][告警傳送失敗]
ProbableCauseTxt:採集出故障或者北向介面故障
AlarmText:告警傳送MQ失敗,異常資訊為 com.ibm.mq.MQException: MQJE001: Completion Code 2, Reason 2009
at com.ibm.mq.MQQueue.put(MQQueue.java:1518)
at com.boco.gdau.channel.remote.QueueChannel.writeData(QueueChannel.java:341)
at com.boco.gcp.north.sender.NorthMQSender.send(NorthMQSender.java:62)
at com.boco.gcp.north.NorthSendThread.sendObject(NorthSendThread.java:134)
at com.boco.gcp.north.NorthSendThread.dispose(NorthSendThread.java:51)
at com.boco.gcp.util.thread.ControllThread.run(ControllThread.java:40)
at java.lang.Thread.run(Thread.java:662)
MQ 日誌分析情況
----- amqccita.c : 3694 -------------------------------------------------------
12/13/2017 02:11:27 PM - Process(5466.2777238) User(mqm) Program(amqrmppa)
Host(ahjzgz-149) Installation(Installation1)
VRMF(7.5.0.0) QMgr(WNMS7_QM)
AMQ9209: Connection to host '10.243.64.73' for channel 'CH1' closed.
EXPLANATION:
An error occurred receiving data from 'XX.XX.XX.XX' over TCP/IP. The
connection to the remote host has unexpectedly terminated.
The channel name is 'CH1'; in some cases it cannot be determined and so is
----- amqccita.c : 3694 -------------------------------------------------------
12/13/2017 02:16:57 PM - Process(5772.2752596) User(mqm) Program(amqrmppa)
Host(ahjzgz-149) Installation(Installation1)
VRMF(7.5.0.0) QMgr(WNMS7_QM)
AMQ9209: Connection to host 'XX.XX.XX.XX' for channel 'CH1' closed.
EXPLANATION:
An error occurred receiving data from '10.24 XX.XX.XX.XX' over TCP/IP. The
connection to the remote host has unexpectedly terminated.
The channel name is 'CH1'; in some cases it cannot be determined and so is
原因分析:
以上這段應用日誌是擷取於應用主機在問題時間點內的日誌,從日誌角度分析來看應用程式(傳送方)向遠端MQ(接收方)投放訊息的時候,遠端MQ通道與傳送方應用連線失敗,其報錯資訊很明顯
”
com.ibm.mq.MQException: MQJE001: Completion Code 2, Reason 2009”。
這個錯說明應用傳送端到MQ接收端這條socket連線被中斷了。因而導致傳送方的訊息傳送不出去。同時又結合同一時間點的
MQ
的日誌來看,遠端主機發訊息資料給
MQ
的
CH1
通道時,它與
MQ
的連線被異常終止,提示資訊“
An error occurred receiving data from 'xx.xx.xx.xx' over TCP/IP. The connection to the remote host has unexpectedly terminated.
”,所以應用訊息傳送失敗。其原因可能存在網路或是應用程式主動發起連線斷開。但從表面日誌是無法分析出來,需要透過網路抓包方式進行分析。
2
、
MQ
版本風險
12/10/2017 08:21:48 AM - Process(5146.4) User(mqm) Program(amqzmur0)
Host(ahjzgz-149) Installation(Installation1)
VRMF(7.5.0.0) QMgr(WNMS7_QM)
AMQ6287: WebSphere MQ V7.5.0.0 (p000-L120605).
EXPLANATION:
WebSphere MQ system information:
Host Info :- Linux 2.6.32-279.el6.x86_64 (MQ Linux (x86-64 platform)
64-bit)
Installation :- /opt/mqm (Installation1)
Version :- 7.5.0.0 (p000-L120605)
原因分析:
當前WebSphere MQ軟體版本只安裝BASE版本為V7.5.0.0,隨時會觸碰到BUG風險,建議將其版本升級到最新補丁v7.5.0.8版本。
四、問題總結
1、透過以上分析發現應用程式與MQ通道之間的連線是被異常中斷開的,但從日誌中無法分析到否是應用程式主動斷開MQ連線,還是網路中斷了應用程式與MQ之間的連線。因此介於這種情況建議在故障時間點內透過網路抓包方式對傳送方應用程式與接收方MQ主機之間網路程式抓包分析。
2、WebSphere MQ軟體只安裝了BASE版本,隨時會觸碰到BUG風險。為了降低因版本問題帶來的風險,建議將其版本升級到最新補丁v7.5.0.8版本。
五、最佳化建議
針對本次問題,我們認為可以從以下兩個方面進行調整,建議如下:
1、 透過分析發現應用程式與MQ通道之間的連線是被異常中斷開的,但從日誌中無法分析到是網路還是應用程式主動發現連線斷開。建議在故障時間點內對傳送方應用與接收方MQ主機之間網路程式抓包分析。
2、 WebSphere MQ軟體補丁從v7.5.0.0升級到v7.5.0.8。
補丁下載地址:
升級方案:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28833846/viewspace-2732929/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MQ系列:訊息中介軟體執行原理MQ
- IM系統的MQ訊息中介軟體選型:Kafka還是RabbitMQ?MQKafka
- MQ訊息中介軟體,面試能問些什麼?MQ面試
- 高併發的核心技術 - 訊息中介軟體(MQ)MQ
- MQ系列2:訊息中介軟體的技術選型MQ
- 訊息中介軟體
- [轉]MQ詳解以及各種訊息中介軟體說明MQ
- 中介軟體之訊息中介軟體-pulsar
- 訊息中介軟體rabbitMQMQ
- 訊息中介軟體—RocketMQ訊息傳送MQ
- 訊息中介軟體選型
- 訊息中介軟體之ActiveMQMQ
- 分散式訊息中介軟體分散式
- 訊息中介軟體Notify和MetaQ-阿里中介軟體阿里
- websphere中介軟體故障診斷troubleshootingWeb
- MQ中介軟體對比MQ
- PHP 訊息中介軟體 工具庫PHP
- 解析訊息中介軟體之RabbitMQMQ
- 訊息中介軟體 — RocketMQ簡介MQ
- 訊息中介軟體 — 使用場景
- 輕量訊息中介軟體ZeroMQMQ
- 從訊息中介軟體看分散式系統的多種套路分散式
- 分散式系統訊息中介軟體——RabbitMQ的使用進階篇分散式MQ
- 雲原生時代訊息中介軟體的演進路線
- C#中的訊息中介軟體(RabbitMQ 和 Redis)C#MQRedis
- 常見訊息中介軟體之ActiveMQMQ
- 常見訊息中介軟體之RocketMQMQ
- 深入訊息中介軟體選型分析
- 訊息中介軟體與JMS標準
- 訊息中介軟體—RocketMQ訊息消費(三)(訊息消費重試)MQ
- 從通訊開始聊聊訊息中介軟體
- [分散式][訊息中介軟體]訊息中介軟體如何實現每秒幾十萬的高併發寫入分散式
- 訊息型中介軟體之RabbitMQ叢集MQ
- 訊息中介軟體—Kafka 的設計思想Kafka
- 訊息中介軟體通用化封裝封裝
- 訊息中介軟體的應用場景
- 訊息中介軟體(RabbitMq、Kafka)分析比較MQKafka
- 訊息中介軟體及其測試要點