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)