ibmMQ-第八章
来源:互联网 发布:窥孔优化 课程设计 编辑:程序博客网 时间:2024/04/29 20:22
第八章 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/errors8.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.exeVersion : 530 Level : p000-L020213Date : 02/25/02 Time : 16:35:47 Counter TimeStamp Process.Thread Data============================================================ 0000062F 16:35:47.348386 6278.1 --{ InitProcessInitialisation00000630 16:35:47.348455 6278.1 ---{ xcsCreateNTSecurityAtts00000631 16:35:47.348516 6278.1 ----{ xcsRequestThreadMutexSem00000632 16:35:47.348583 6278.1 ----} xcsRequestThreadMutexSem (rc=OK)00000633 16:35:47.348639 6278.1 ----{ xcsInitGlobalSecurityData00000634 16:35:47.349111 6278.1 ----} xcsInitGlobalSecurityData (rc=OK)00000635 16:35:47.349239 6278.1 ----{ xcsReleaseThreadMutexSem00000636 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 ---{ xcsReleaseThreadMutexSem00000639 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 --{ xcsCreateThreadMutexSem0000063C 16:35:47.349395 6278.1 --} xcsCreateThreadMutexSem (rc=OK)0000063D 16:35:47.349872 6278.1 --{ xcsProgramInit0000063E 16:35:47.349900 6278.1 --} xcsProgramInit (rc=OK)0000063F 16:35:47.350027 6278.1 --{ xcsInitialize00000640 16:35:47.350048 6278.1 ---{ xcsRequestThreadMutexSem00000641 16:35:47.350065 6278.1 ---} xcsRequestThreadMutexSem (rc=OK)00000642 16:35:47.350079 6278.1 ---{ xihCheckThreadList00000643 16:35:47.350101 6278.1 ---} xihCheckThreadList (rc=OK)00000644 16:35:47.350115 6278.1 ---{ InitPrivateServices00000645 16:35:47.350165 6278.1 attributes 3276800000646 16:35:47.350204 6278.1 ----{ xcsCreateThreadMutexSem00000647 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 --{ xxxInitialize0000064B 16:35:47.350977 6278.1 ---{ xcsGetMem8.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->q2.异步地。 以下命令对程序 myprog运行了异步跟踪和结束跟踪。 trace -a -j30D,30E -o trace.filemyprogtrcstop您可以用以下命令格式化跟踪文件: trcrpt -t /usr/mqm/lib/amqtrc.fmt trace.file > report.filereport.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=0000000030E 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=0000000030D 0.000001439 0.000044 MQS FNC Entry........ 36124.51 xcsCheckProcess 30D 0.000001501 0.000062 MQS FNC Entry............ 51604.55 aqhCheckMsgUnencumbered30E 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=0000000030D 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=0000000030E 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 Stackamqzdmaa.mainxcsTerminatexcsDisconnectSharedSubpoolxcsDettachSharedSubpoolxcsGetSetConnectCountxstGetExtentConnectCountxstStorageRequestxstServerRequestxcsFFST 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 StackrrmProcessMsgrrmChangeClqxcsFFST 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)