某運營商系統MQ訊息中介軟體連線中斷故障

jaymarco發表於2020-11-09

一、問題現象描述

那是某年某日某日下午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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章