第八章 WebSphere MQ 问题诊断
目标
1. 描述在那儿能找到能确定问题的消息日志。
2. 学习启动和停止WebSphere MQ的跟踪功能。
8.1错误日志
WebSphere MQ 使用许多错误日志来捕捉WebSphere MQ自身的操作、任何队列管理器的启动和正在使用的通道的错误信息。
错误日志的位置取决于队列管理器名,以及错误是否与客户机相关。
在 WebSphere MQ Windows 版中,假设 WebSphere MQ 已经安装在缺省位置中:
如果队列管理器名称是已知的,则错误日志位于:
c:\Program Files\IBM\WebSphere MQ\qmgrs\qmname\errors
如果队列管理器不是已知的,则错误日志位于:
c:\Program Files\IBM\WebSphere MQ\qmgrs\@SYSTEM\errors
如果错误发生在客户机应用程序,则错误日志位于客户机的根目录中:
c:\Program Files\IBM\WebSphere MQ Client\errors
在 WebSphere MQ Windows 版中,错误信息也被添加到应用程序日志中,所以可以通过查看Windows系统的事件查看器来检查WebSphere MQ的错误日志。
在 WebSphere MQ UNIX 系统版中:
如果队列管理器名称是已知的并且队列管理器是可用的,则错误日志位于:
/var/mqm/qmgrs/qmname/errors
如果队列管理器不是可用的,则错误日志位于:
/var/mqm/qmgrs/@SYSTEM/errors
如果错误发生于客户机应用程序,则错误日志位于客户机的根目录中:
/var/mqm/errors
8.1.1日志文件
在产品安装时,在qmgrs 目录下将创建@SYSTEM errors子目录。errors子目录最多可以包含 3 个错误日志文件,分别是:
• AMQERR01.LOG
• AMQERR02.LOG
• AMQERR03.LOG
在创建队列管理器后,在需要时将创建了 3 个错误日志文件。这些文件名是,AMQERR01、AMQERR02 和 AMQERR03 并且每一个文件的大小都为256 KB。这些文件被放置在您创建的队列管理器的errors子目录中。
当产生错误消息时,它们被放置在 AMQERR01 中。当 AMQERR01文件比 256 KB 大时,将其复制成AMQERR02。在复制前,将 AMQERR02 复制到 AMQERR03.LOG。这样将删除了AMQERR03的以前内容。
因此最新的错误消息总是放在 AMQERR01 中的,其它文件用来保存错误消息的历史记录。
所有与通道相关的信息也被放在相应的队列管理器的错误文件中,除非队列管理起步可用或队列管理器的名称未知,则通道相关的消息是放在 @SYSTEM 错误子目录。
使用通常的系统编辑器就可以查看错误日志文件的内容。
有些错误是在错误日志还没有创建时发生的,WebSphere MQ 也会尝试记录这样的错误日志。日志的位置取决于创建队列管理器的过程进展情况。
如果配置文件被损坏,WebSphere MQ不能读取目录信息,则将错误记录到在安装时创建的根(/var/mqm 或 C:\Program Files\IBM\WebSphere MQ)的errors目录中。
如果 WebSphere MQ 可以读取配置信息,并且可以访问 Default Prefix 的值,则错误记录在由 Default Prefix 属性标识的目录的errors子目录中。例如,如果缺省前缀为 C:\Program Files\IBM\WebSphere MQ,则错误在 C:\Program Files\IBM\WebSphere MQ\errors 中记录。
8.1.2忽略WebSphere MQ for Windows的错误代码
如果您要忽略WebSphere MQ Windows的错误代码,则编辑 Windows 注册表。
注册表键是:
HKEY_LOCAL_MACHINE\Software\IBM\MQSeries\CurrentVersion\IgnoredErrorCodes
它的值是由 NULL 字符分隔的字符串数组,例如,如果您要 WebSphere MQ 忽略错误代码 AMQ3045、AMQ6055 和 AMQ8079,则将值设置为:AMQ3045\0AMQ6055\0AMQ8079\0\0
您对配置文件所做的任何修改,只有在下一次启动队列管理器时才能生效。
8.1.3操作信息
操作信息是指一般的错误信息,通常由用户在命令上使用无效的参数等类似操作时直接引起。这些信息被写到相关的窗口中。另外,一些操作信息被写到队列管理器目录中的 AMQERR01.LOG 文件的,而其它是写到错误日志的 @SYSTEM 目录副本中。
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 设置
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
8.5首次故障支持技术(FFST)
本节描述了 WebSphere MQ 的首次故障支持技术(FFST)的角色。
8.5.1FFST: WebSphere MQ Windows 版
在 WebSphere MQ Windows 版中,FFST 信息是存放在 c:\Program Files\IBM\WebSphere MQ\errors 目录下的文件中。这些错误通常都是严重的、不可恢复的错误,要么是系统的配置问题或 WebSphere MQ 内部错误。
FFST 文件命名为 AMQnnnnn.mm.FDC,
其中:nnnnn 是报告错误进程的标识
mm 是顺序号,通常为 0
当进程创建了 FFST 记录时,它还将记录发送到事件日志(应用程序级别)中。记录包含 FFST 文件的名称来辅助自动问题跟踪。下图显示了典型的 FFST 日志。
+-----------------------------------------------------------------------------+
| |
| WebSphere MQ First Failure Symptom Report |
| ========================================= |
| |
| Date/Time :- Tue February 19 12:58:42 GMT Standard Time 2002 |
| Host Name :- NETTLE (NT Version 4.0 Build 1381: Service Pack 6) |
| PIDS :- 5724B4101 |
| LVLS :- 530 |
| Product Long Name :- WebSphere MQ for Windows |
| Vendor :- IBM |
| Probe Id :- XC371019 |
| Application Name :- MQM |
| Component :- xstServerRequest |
| Build Date :- Feb 13 2002 |
| CMVC level :- p000-L020213 |
| Build Type :- IKAP - (Production) |
| UserID :- nigel |
| Process Name :- C:\Program Files\IBM\WebSphere MQ\bin\amqzdmaa.exe |
| Process :- 00001678 |
| Thread :- 00000001 |
| QueueManager :- REGR |
| Major Errorcode :- xecF_E_UNEXPECTED_SYSTEM_RC |
| Minor Errorcode :- OK |
| Probe Type :- MSGAMQ6119 |
| Probe Severity :- 2 |
| Probe Description :- AMQ6119: An internal WebSphere MQ error has occurred |
| (WinNT error 5 from WaitForSingleObject.) |
| FDCSequenceNumber :- 0 |
| Comment1 :- WinNT error 5 from WaitForSingleObject. |
| |
| Comment2 :- Access is denied. |
| |
| |
+-----------------------------------------------------------------------------+
MQM Function Stack
amqzdmaa.main
xcsTerminate
xcsDisconnectSharedSubpool
xcsDettachSharedSubpool
xcsGetSetConnectCount
xstGetExtentConnectCount
xstStorageRequest
xstServerRequest
xcsFFST
MQM Trace History
------} zcpSendOnPipe rc=OK
------{ zcpReceiveOnPipe
-------{ xcsWaitEventSem
...
IBM使用函数堆栈和跟踪历史来辅助定位问题。在大多数情况下,当生成 FFST 记录时,系统管理员基本上不能自己解决问题,而需要寻求IBM 支持中心的帮助。
8.5.2FFST: WebSphere MQ UNIX 系统版
对于 WebSphere MQ UNIX 系统版,FFST 信息是存放在 /var/mqm/errors 目录的文件中。
这些错误通常都是严重的、不可恢复的错误。要么时系统的配置问题或 WebSphere MQ 内部错误。
文件命名为 AMQnnnnn.mm.FDC,其中:
nnnnn 是报告错误进程的标识
mm 是顺序号,通常为 0
当进程创建了FFST 记录时,它也将一条记录发送到系统日志(用户级)中。记录包含 FFST 文件名用来辅助自动问题跟踪,下图显示一些典型的 FFST 数据。
+-----------------------------------------------------------------------------+
| |
| WebSphere MQ First Failure Symptom Report |
| ========================================= |
| |
| Date/Time :- Friday March 15 17:56:51 SGT 2002 |
| Host Name :- sunrts3 (SunOS 5.7) |
| PIDS :- 5724B4102 |
| LVLS :- 530 |
| Product Long Name :- WebSphere MQ for Sun Solaris |
| Vendor :- IBM |
| Probe Id :- RM161000 |
| Application Name :- MQM |
| Component :- rrmChangeClq |
| Build Date :- Mar 13 2002 |
| CMVC level :- p000-L020312 |
| Build Type :- IKAP - (Production) |
| UserID :- 00001001 (mqm) |
| Program Name :- amqrrmfa |
| Process :- 00019454 |
| Thread :- 00000001 |
| QueueManager :- REGR |
| Major Errorcode :- rrcE_CLUS_COMMAND_ERROR |
| Minor Errorcode :- OK |
| Probe Type :- MSGAMQ9413 |
| Probe Severity :- 2 |
| Probe Description :- AMQ9413: Repository command format error, command code |
| 0 |
| FDCSequenceNumber :- 0 |
| |
+-----------------------------------------------------------------------------+
MQM Function Stack
rrmProcessMsg
rrmChangeClq
xcsFFST
MQM Trace History
---{ zstVerifyPCD
---} zstVerifyPCD rc=OK
---{ ziiMQCMIT
----{ ziiCreateIPCCMessage
-----{ zcpCreateMessage
-----} zcpCreateMessage rc=OK
----} ziiCreateIPCCMessage rc=OK
----{ ziiSendReceiveAgent
-----{ zcpSendOnPipe
...
IBM使用函数堆栈和跟踪历史来辅助定位问题。在大多数情况下,当生成 FFST 记录时,系统管理员基本上不能自己解决问题,而需要寻求IBM 支持中心的帮助。
然而,有些问题是系统管理员可以解决的。如果FFST 显示当调用 IPC函数(例如,semop或 shmget)时资源用尽或空间用尽,则可能是已经超出了相关的内核参数极限。
如果 FFST报告显示问题 setitimer,则可能需要修改内核定时器参数。 要解决这些问题,增加 IPC 限制、重新建立内核并重新启动机器。
8.6本章小结
8.7本章练习
1. 如果队列管理器出现了故障,那么错误信息将记录在下列那个文件中?
(1) QMGRERR
(2) ERRORS
(3) amqerr01.log
(4) AMQERR.001
答案:(3)
2. 当队列管理器出现故障重新启动后,非永久性消息能够得到恢复。
(1) 对
(2) 错
答案:(2)
ibmMQ-第八章
最新推荐文章于 2024-08-12 02:22:16 发布