ibmMQ-第八章

第八章 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跟踪文件
在安装过程期间,您可以选择跟踪文件的存放路径。跟踪文件一般放置在目录 \\errors 中,其中  是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)

你可能感兴趣的:(服务器,websphere,ibm,windows,ssl,system,aix)