WebSphere MQ入門教程(27):MQ死信佇列、配置、跟蹤
阿新 • • 發佈:2019-02-14
8.2死信佇列
出於某種原因無法傳送的訊息都被放置在死信佇列。您可以通過 MQSC 命令 DISPLAY QUEUE 來檢查佇列是否包含訊息。如果佇列包含訊息,則使用所提供的瀏覽樣本應用程式(amqsbcg)來瀏覽佇列上的訊息。樣本應用程式將顯示每個訊息的訊息描述符和訊息上下文欄位。您應該通過分析訊息的死信頭來確定訊息被放在死信佇列的原因。
8.3配置檔案和問題確定
配置檔案錯誤通常找不到佇列管理器,和導致佇列管理器不可用。確保配置檔案存在,並且 WebSphere MQ 配置檔案必須和佇列管理器和日誌目錄對應。 在 Windows 登錄檔中的錯誤是在啟動佇列管理器時,通過訊息通知的。
8.4跟蹤
本節描述瞭如何產生WebSphere MQ跟蹤資訊。
8.4.1WebSphere MQ Windows的 跟蹤
在 WebSphere MQ Windows 版中,您可以使用 strmqtrc 控制命令啟用或修改跟蹤;使用 endmqtrc 控制命令停止跟蹤。您還可以使用 WebSphere MQ 服務管理單元啟動和停止跟蹤。
8.4.1.1跟蹤的選項
使用 -t 和 -x 選項控制跟蹤資訊量的詳細程度。預設情況下,啟用所有跟蹤資訊。-x 選項指定不需要跟蹤的資訊。
例如,如果您僅跟蹤佇列管理器 QM1在通訊網路上流動的資料,則使用:
strmqtrc -m QM1 -x all -t comms
8.4.1.2跟蹤檔案
在安裝過程期間,您可以選擇跟蹤檔案的存放路徑。跟蹤檔案一般放置在目錄 \<mqmwork>\errors 中,其中 <mqmwork> 是WebSphere MQ 資料檔案的安裝目錄。
跟蹤檔名的格式如下:
AMQppppp.TRC
其中 ppppp 是產生跟蹤的程序的程序標識(PID)。
注:
1.程序標識號的數字位數不是固定的。
2.每個被跟蹤的程序都有一個跟蹤檔案。
8.4.1.3跟蹤資料的示例
下圖顯示了WebSphere MQ Windows版的跟蹤資料:
Process : C:\Program Files\IBM\WebSphere MQ\bin\amqxssvn.exe
Version : 530 Level : p000-L020213
Date : 02/25/02 Time : 16:35:47
Counter TimeStamp Process.Thread Data
============================================================
0000062F 16:35:47.348386 6278.1 --{ InitProcessInitialisation
00000630 16:35:47.348455 6278.1 ---{ xcsCreateNTSecurityAtts
00000631 16:35:47.348516 6278.1 ----{ xcsRequestThreadMutexSem
00000632 16:35:47.348583 6278.1 ----} xcsRequestThreadMutexSem (rc=OK)
00000633 16:35:47.348639 6278.1 ----{ xcsInitGlobalSecurityData
00000634 16:35:47.349111 6278.1 ----} xcsInitGlobalSecurityData (rc=OK)
00000635 16:35:47.349239 6278.1 ----{ xcsReleaseThreadMutexSem
00000636 16:35:47.349261 6278.1 ----} xcsReleaseThreadMutexSem (rc=OK)
00000637 16:35:47.349275 6278.1 ---} xcsCreateNTSecurityAtts (rc=OK)
00000638 16:35:47.349303 6278.1 ---{ xcsReleaseThreadMutexSem
00000639 16:35:47.349319 6278.1 ---} xcsReleaseThreadMutexSem (rc=OK)
0000063A 16:35:47.349344 6278.1 --} InitProcessInitialisation (rc=OK)
0000063B 16:35:47.349359 6278.1 --{ xcsCreateThreadMutexSem
0000063C 16:35:47.349395 6278.1 --} xcsCreateThreadMutexSem (rc=OK)
0000063D 16:35:47.349872 6278.1 --{ xcsProgramInit
0000063E 16:35:47.349900 6278.1 --} xcsProgramInit (rc=OK)
0000063F 16:35:47.350027 6278.1 --{ xcsInitialize
00000640 16:35:47.350048 6278.1 ---{ xcsRequestThreadMutexSem
00000641 16:35:47.350065 6278.1 ---} xcsRequestThreadMutexSem (rc=OK)
00000642 16:35:47.350079 6278.1 ---{ xihCheckThreadList
00000643 16:35:47.350101 6278.1 ---} xihCheckThreadList (rc=OK)
00000644 16:35:47.350115 6278.1 ---{ InitPrivateServices
00000645 16:35:47.350165 6278.1 attributes 32768
00000646 16:35:47.350204 6278.1 ----{ xcsCreateThreadMutexSem
00000647 16:35:47.350233 6278.1 ----} xcsCreateThreadMutexSem (rc=OK)
00000648 16:35:47.350255 6278.1 pid MQ(6) system(6278)
00000649 16:35:47.350337 6278.1 ---} InitPrivateServices (rc=OK)
0000064A 16:35:47.350360 6278.1 --{ xxxInitialize
0000064B 16:35:47.350977 6278.1 ---{ xcsGetMem
8.4.2WebSphere MQ AIX的跟蹤
WebSphere MQ AIX 使用AIX系統標準跟蹤。跟蹤分為兩步:
1.採集資料 。
2.格式化結果資料。
WebSphere MQ 使用兩個跟蹤 hook 標識:X'30D' 和X'30E' 。
跟蹤提供了執行跟蹤的詳細資訊來幫助您分析問題。跟蹤產生的檔案可能非常大,所以合理地設定跟蹤。例如,您可以通過時間和元件來限定跟蹤。
有兩種執行跟蹤的方法:
1.互動地。
以下命令是對程式 myprog 運行了互動式跟蹤並結束跟蹤。
trace -j30D,30E -o trace.file
->!myprog
->q
2.非同步地。
以下命令對程式 myprog運行了非同步跟蹤和結束跟蹤。
trace -a -j30D,30E -o trace.file
myprog
trcstop
您可以用以下命令格式化跟蹤檔案:
trcrpt -t /usr/mqm/lib/amqtrc.fmt trace.file > report.file
report.file 是存放格式化的跟蹤輸出的檔名。
注:
當跟蹤是 活動的,將跟蹤所有的WebSphere MQ 活動。
8.4.2.1跟蹤選項
可使用環境變數 MQS_TRACE_OPTIONS來分別啟用高階詳細資訊和引數跟蹤的功能。下表定義了MQS_TRACE_OPTIONS的各種配置的跟蹤行為。
表,MQS_TRACE_OPTIONS 設定
<style><!-- /* Font Definitions */ @font-face {font-family:宋體; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:SimSun; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:"\@宋體"; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; mso-pagination:none; font-size:10.5pt; mso-bidi-font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:宋體; mso-font-kerning:1.0pt;} /* Page Definitions */ @page {mso-page-border-surround-header:no; mso-page-border-surround-footer:no;} @page Section1 {size:612.0pt 792.0pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:36.0pt; mso-footer-margin:36.0pt; mso-paper-source:0;} div.Section1 {page:Section1;} --></style>
注:
1. 最好需要在技術支援人員的指導下,設定MQS_TRACE_OPTIONS環境變數。
2. 通常在啟動佇列管理器之前設定MQS_TRACE_OPTIONS。
3. 在跟蹤開始前設定 MQS_TRACE_OPTIONS。
8.4.2.2 SSL 跟蹤
如果您請求 SSL 跟蹤,請注意以下內容:
• SSL 跟蹤是寫到目錄 /var/mqm/trace 的。
• SSL 跟蹤檔案是 AMQ.SSL.TRC 和 AMQ.SSL.TRC.1。
• 您無法格式化 SSL 跟蹤檔案;將它們原封不動地發給IBM 技術支援中心。
8.4.2.3跟蹤資料的示例
下圖顯示了WebSphere MQ AIX跟蹤的資料:
ID ELAPSED_SEC DELTA_MSEC APPL SYSCALL KERNEL INTERRUPT
30D 0.000000000 0.000000 MQS FNC Entry. 71540.1 zcpSendOnPipe
30E 0.000000038 0.000038 Msg Unencumbered (T/F)(0)
30D 0.000000176 0.000138 MQS FNC Exit............. 51604.55
aqhCheckMsgUnencumbered rc=00000000
30E 0.000000418 0.000242 aqhCheckMsgChains : internal retcode
208007d3
30D 0.000000516 0.000098 MQS FNC Entry.. 71540.14 xcsWaitEventSem
30E 0.000000590 0.000074 MessageSent (24 bytes)
30E 0.000000847 0.000257 aqhCheckMsgChains : internal retcode
208007d3
30E 0.000000936 0.000089 hev=1::0::0-307724 TimeOut(-1)
30E 0.000001173 0.000237 aqhCheckMsgChains : internal retcode
208007d3
30D 0.000001313 0.000140 MQS FNC Entry............ 51604.55
aqtIdxToSpcFn
30D 0.000001395 0.000082 MQS FNC Exit............. 51604.55
aqtIdxToSpcFn rc=00000000
30D 0.000001439 0.000044 MQS FNC Entry........ 36124.51
xcsCheckProcess
30D 0.000001501 0.000062 MQS FNC Entry............ 51604.55
aqhCheckMsgUnencumbered
30E 0.000001645 0.000144 MQS Data from zcpSendOnPipe Length=0018
5A525354 000007E5 00000000 00000000
ZRST 00000000 00000000
30E 0.000001765 0.000120 pBCrsr (0)
30D 0.000001907 0.000142 MQS FNC Entry............. 51604.55
aqhInTrans
30D 0.000001997 0.000090 MQS FNC Exit.............. 51604.55
aqhInTrans rc=00000000
30D 0.000002025 0.000028 MQS FNC Entry.. 71540.1 xcsResetEventSem
30E 0.000002243 0.000218 Msg Unencumbered (T/F)(0)
30D 0.000002363 0.000120 MQS FNC Exit............. 51604.55
aqhCheckMsgUnencumbered rc=00000000
30E 0.000002392 0.000029 hev=1::0::0-305876
30D 0.000002522 0.000130 MQS FNC Entry... 71540.14 xlsLockEvent
30E 0.000002630 0.000108 aqhCheckMsgChains : internal retcode
208007d3
出於某種原因無法傳送的訊息都被放置在死信佇列。您可以通過 MQSC 命令 DISPLAY QUEUE 來檢查佇列是否包含訊息。如果佇列包含訊息,則使用所提供的瀏覽樣本應用程式(amqsbcg)來瀏覽佇列上的訊息。樣本應用程式將顯示每個訊息的訊息描述符和訊息上下文欄位。您應該通過分析訊息的死信頭來確定訊息被放在死信佇列的原因。
8.3配置檔案和問題確定
配置檔案錯誤通常找不到佇列管理器,和導致佇列管理器不可用。確保配置檔案存在,並且 WebSphere MQ 配置檔案必須和佇列管理器和日誌目錄對應。 在 Windows 登錄檔中的錯誤是在啟動佇列管理器時,通過訊息通知的。
8.4跟蹤
本節描述瞭如何產生WebSphere MQ跟蹤資訊。
8.4.1WebSphere MQ Windows的
在 WebSphere MQ Windows 版中,您可以使用 strmqtrc 控制命令啟用或修改跟蹤;使用 endmqtrc 控制命令停止跟蹤。您還可以使用 WebSphere MQ 服務管理單元啟動和停止跟蹤。
8.4.1.1跟蹤的選項
使用 -t 和 -x 選項控制跟蹤資訊量的詳細程度。預設情況下,啟用所有跟蹤資訊。-x 選項指定不需要跟蹤的資訊。
例如,如果您僅跟蹤佇列管理器 QM1在通訊網路上流動的資料,則使用:
strmqtrc -m QM1 -x all -t comms
8.4.1.2跟蹤檔案
在安裝過程期間,您可以選擇跟蹤檔案的存放路徑。跟蹤檔案一般放置在目錄 \<mqmwork>\errors 中,其中 <mqmwork> 是WebSphere MQ 資料檔案的安裝目錄。
跟蹤檔名的格式如下:
AMQppppp.TRC
其中 ppppp 是產生跟蹤的程序的程序標識(PID)。
注:
1.程序標識號的數字位數不是固定的。
2.每個被跟蹤的程序都有一個跟蹤檔案。
8.4.1.3跟蹤資料的示例
下圖顯示了WebSphere MQ Windows版的跟蹤資料:
Process : C:\Program Files\IBM\WebSphere MQ\bin\amqxssvn.exe
Version : 530 Level : p000-L020213
Date : 02/25/02 Time : 16:35:47
Counter TimeStamp Process.Thread Data
============================================================
0000062F 16:35:47.348386 6278.1 --{ InitProcessInitialisation
00000630 16:35:47.348455 6278.1 ---{ xcsCreateNTSecurityAtts
00000631 16:35:47.348516 6278.1 ----{ xcsRequestThreadMutexSem
00000632 16:35:47.348583 6278.1 ----} xcsRequestThreadMutexSem (rc=OK)
00000633 16:35:47.348639 6278.1 ----{ xcsInitGlobalSecurityData
00000634 16:35:47.349111 6278.1 ----} xcsInitGlobalSecurityData (rc=OK)
00000635 16:35:47.349239 6278.1 ----{ xcsReleaseThreadMutexSem
00000636 16:35:47.349261 6278.1 ----} xcsReleaseThreadMutexSem (rc=OK)
00000637 16:35:47.349275 6278.1 ---} xcsCreateNTSecurityAtts (rc=OK)
00000638 16:35:47.349303 6278.1 ---{ xcsReleaseThreadMutexSem
00000639 16:35:47.349319 6278.1 ---} xcsReleaseThreadMutexSem (rc=OK)
0000063A 16:35:47.349344 6278.1 --} InitProcessInitialisation (rc=OK)
0000063B 16:35:47.349359 6278.1 --{ xcsCreateThreadMutexSem
0000063C 16:35:47.349395 6278.1 --} xcsCreateThreadMutexSem (rc=OK)
0000063D 16:35:47.349872 6278.1 --{ xcsProgramInit
0000063E 16:35:47.349900 6278.1 --} xcsProgramInit (rc=OK)
0000063F 16:35:47.350027 6278.1 --{ xcsInitialize
00000640 16:35:47.350048 6278.1 ---{ xcsRequestThreadMutexSem
00000641 16:35:47.350065 6278.1 ---} xcsRequestThreadMutexSem (rc=OK)
00000642 16:35:47.350079 6278.1 ---{ xihCheckThreadList
00000643 16:35:47.350101 6278.1 ---} xihCheckThreadList (rc=OK)
00000644 16:35:47.350115 6278.1 ---{ InitPrivateServices
00000645 16:35:47.350165 6278.1 attributes 32768
00000646 16:35:47.350204 6278.1 ----{ xcsCreateThreadMutexSem
00000647 16:35:47.350233 6278.1 ----} xcsCreateThreadMutexSem (rc=OK)
00000648 16:35:47.350255 6278.1 pid MQ(6) system(6278)
00000649 16:35:47.350337 6278.1 ---} InitPrivateServices (rc=OK)
0000064A 16:35:47.350360 6278.1 --{ xxxInitialize
0000064B 16:35:47.350977 6278.1 ---{ xcsGetMem
8.4.2WebSphere MQ AIX的跟蹤
WebSphere MQ AIX 使用AIX系統標準跟蹤。跟蹤分為兩步:
1.採集資料 。
2.格式化結果資料。
WebSphere MQ 使用兩個跟蹤 hook 標識:X'30D' 和X'30E' 。
跟蹤提供了執行跟蹤的詳細資訊來幫助您分析問題。跟蹤產生的檔案可能非常大,所以合理地設定跟蹤。例如,您可以通過時間和元件來限定跟蹤。
有兩種執行跟蹤的方法:
1.互動地。
以下命令是對程式 myprog 運行了互動式跟蹤並結束跟蹤。
trace -j30D,30E -o trace.file
->!myprog
->q
2.非同步地。
以下命令對程式 myprog運行了非同步跟蹤和結束跟蹤。
trace -a -j30D,30E -o trace.file
myprog
trcstop
您可以用以下命令格式化跟蹤檔案:
trcrpt -t /usr/mqm/lib/amqtrc.fmt trace.file > report.file
report.file 是存放格式化的跟蹤輸出的檔名。
注:
當跟蹤是
8.4.2.1跟蹤選項
可使用環境變數 MQS_TRACE_OPTIONS來分別啟用高階詳細資訊和引數跟蹤的功能。下表定義了MQS_TRACE_OPTIONS的各種配置的跟蹤行為。
表,MQS_TRACE_OPTIONS 設定
<style><!-- /* Font Definitions */ @font-face {font-family:宋體; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:SimSun; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:"\@宋體"; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; mso-pagination:none; font-size:10.5pt; mso-bidi-font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:宋體; mso-font-kerning:1.0pt;} /* Page Definitions */ @page {mso-page-border-surround-header:no; mso-page-border-surround-footer:no;} @page Section1 {size:612.0pt 792.0pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:36.0pt; mso-footer-margin:36.0pt; mso-paper-source:0;} div.Section1 {page:Section1;} --></style>
MQS_TRACE_OPTIONS |
跟蹤資訊 |
取消設定(預設值) |
預設跟蹤(除高階詳細資訊之外的所有跟蹤) |
0 |
沒有WebSphere MQ跟蹤 |
262148 |
入口,出口和引數跟蹤 |
786436 |
入口,出口、引數和高階詳細資訊跟蹤 |
4980740 |
入口,出口、引數、高階詳細資訊和SSL跟蹤 |
3407871 |
不帶引數跟蹤的預設跟蹤 |
3670015 |
預設跟蹤,包含引數跟蹤 |
7864319 |
預設跟蹤,包含引數跟蹤和SSL跟蹤 |
4194303 |
所有跟蹤,包含高階詳細資訊跟蹤 |
注:
1. 最好需要在技術支援人員的指導下,設定MQS_TRACE_OPTIONS環境變數。
2. 通常在啟動佇列管理器之前設定MQS_TRACE_OPTIONS。
3. 在跟蹤開始前設定 MQS_TRACE_OPTIONS。
8.4.2.2 SSL 跟蹤
如果您請求 SSL 跟蹤,請注意以下內容:
• SSL 跟蹤是寫到目錄 /var/mqm/trace 的。
• SSL 跟蹤檔案是 AMQ.SSL.TRC 和 AMQ.SSL.TRC.1。
• 您無法格式化 SSL 跟蹤檔案;將它們原封不動地發給IBM 技術支援中心。
8.4.2.3跟蹤資料的示例
下圖顯示了WebSphere MQ AIX跟蹤的資料:
ID ELAPSED_SEC DELTA_MSEC APPL SYSCALL KERNEL INTERRUPT
30D 0.000000000 0.000000 MQS FNC Entry. 71540.1 zcpSendOnPipe
30E 0.000000038 0.000038 Msg Unencumbered (T/F)(0)
30D 0.000000176 0.000138 MQS FNC Exit............. 51604.55
aqhCheckMsgUnencumbered rc=00000000
30E 0.000000418 0.000242 aqhCheckMsgChains : internal retcode
208007d3
30D 0.000000516 0.000098 MQS FNC Entry.. 71540.14 xcsWaitEventSem
30E 0.000000590 0.000074 MessageSent (24 bytes)
30E 0.000000847 0.000257 aqhCheckMsgChains : internal retcode
208007d3
30E 0.000000936 0.000089 hev=1::0::0-307724 TimeOut(-1)
30E 0.000001173 0.000237 aqhCheckMsgChains : internal retcode
208007d3
30D 0.000001313 0.000140 MQS FNC Entry............ 51604.55
aqtIdxToSpcFn
30D 0.000001395 0.000082 MQS FNC Exit............. 51604.55
aqtIdxToSpcFn rc=00000000
30D 0.000001439 0.000044 MQS FNC Entry........ 36124.51
xcsCheckProcess
30D 0.000001501 0.000062 MQS FNC Entry............ 51604.55
aqhCheckMsgUnencumbered
30E 0.000001645 0.000144 MQS Data from zcpSendOnPipe Length=0018
5A525354 000007E5 00000000 00000000
ZRST 00000000 00000000
30E 0.000001765 0.000120 pBCrsr (0)
30D 0.000001907 0.000142 MQS FNC Entry............. 51604.55
aqhInTrans
30D 0.000001997 0.000090 MQS FNC Exit.............. 51604.55
aqhInTrans rc=00000000
30D 0.000002025 0.000028 MQS FNC Entry.. 71540.1 xcsResetEventSem
30E 0.000002243 0.000218 Msg Unencumbered (T/F)(0)
30D 0.000002363 0.000120 MQS FNC Exit............. 51604.55
aqhCheckMsgUnencumbered rc=00000000
30E 0.000002392 0.000029 hev=1::0::0-305876
30D 0.000002522 0.000130 MQS FNC Entry... 71540.14 xlsLockEvent
30E 0.000002630 0.000108 aqhCheckMsgChains : internal retcode
208007d3