当前位置:首页 > WebSphere MQ故障定位分析和排除
目前随着我们在中国的WebSphere MQ(MQSeries)用户数量越来越多,越来越多的用户开始对MQ使用时的性能优化问题提出要求,希望能够更好地使用我们的产品,并尽可能的发挥它的最大优势,这里,我根据日常积累的经验谈一谈在MQ性能优化方面应该考虑的因素。 任何一种软件,都会存在一定的系统管理工作,WebSphere MQ也不例外,在使用WebSphere MQ(以下简称MQ)时,我们可能会由于配置的原因或者由于系统的原因,也可能由于MQ本身的原因,而遇到MQ运行过程中的一些故障和问题,如何能够快速地定位这些问题,分析问题发生的原因,进而快速地解决问题,恢复系统正常运行呢?这需要一定的经验积累和技巧,本文将对这方面给出一些简单的提示和方法。
其实,MQ的故障分析手段很多,例如MQ的错误日志即是一种简单易行、快速有效的手段,通过查看错误日志往往能一针见血地迅速解决问题,另外MQ还提供了其它一些手段,如通过作 trace 和 FFST (First Failure support technology) 等途径,来追踪和记录错误信息,从而解决问题。
作为一个跨平台的中间件产品,MQ在各个平台上的系统管理方法也有极大的相似之处,尤其在AIX,SUN,HP-UNIX等Unix平台和WindowsNT/2000平台上,本文将以MQ for Windows NT/2000 为例,帮助您分析和定位产品运行过程中可能发生的问题,并给出查找问题的办法,帮助您分析问题产生的可能原因,从而给出解决问题的途径。
在分析故障原因时,通常可从一个或一系列症状入手,对它们进行跟踪以发现问题发生的原因。然而,诊断问题不是解决问题。但是,问题诊断的过程常使你能够解决问题。例如,如果你发现引起问题的原因是应用程序中的一个错误,你就可以通过改正该错误来解决问题。如果在确定了问题的原因并采取了相应措施后,您仍不能解决问题,您可以和IBM支持中心联系以帮助您解决问题。
MQ作为一个通讯中间件产品,它的运行故障概括而言主要与网络、MQ本身以及客户应用三个方面有关,通常出现故障时,主要要从这三方面考虑,当然还需要排除和考虑其它一些额外因素,例如,是否别的应用出现异常,把内存等资源耗尽从而导致了MQ的运行失败等等。
MQ为我们提供了丰富的故障分析手段,例如,MQ的系统管理命令,MQ的各种类型的错误日志,MQ的trace, FFST等。以下本篇将从错误日志、常见故障分析等几方面探讨一下MQ的故障分析技巧。首先我们讨论对于发现问题、解决问题十分重要,也非常奏效的MQ提供的错误日志手段,然后讨论在MQ运行过程中可能会出现的问题,并给出基本的解决方案,最后简单讨论MQ提供的trace和 FFST(First Failure support technology) 两种错误分析手段。
1 错误日志分析
当MQ运行过程中,出现问题时,我们第一个应该采取的行动应该是察看MQ的错误日志。注意,在这里,不要将MQ系统的数据日志和错误日志相混淆。MQ的数据日志包含了\和\两部分,在NT/2000平台上位于/mqm/log下(假设MQSeries产品安装目录为C:\\MQM下),是对MQ的消息数据以及用户对MQ的操作的纪录,是用于数据备份和系统恢复时使用的,也是数据不丢失、不重复的保障。而MQ的错误日志是对MQ系统运行过程中出现错误的纪录,它是我们查找错误原因的最简单快捷,最方便有效的手段。用户一定要掌握这一方法,养成察看错误日志的良好习惯。
MQ在各种层次上,为用户提供了丰富的日志文件,这些日志文件包含了所有被启动的队列管理器、有关对MQ的队列管理器操作、以及被启动的通道的相关信息,当队列管理器和通道等运行时,有关信息包括出现异常情况时的信息都将在日志文件中有所体现。
在Windows NT/2000环境中,各个日志文件的位置如下(假设MQSeries产品安装目录为C:\\MQM下):
若队列管理器名称已知,并且处于运行状态,错误日志位于:
c:\\mqm\\qmgr\\QMgrName\\errors 若队列管理器不处于运行状态,则错误日志位于:
c:\\mqm\\qmgrs\\@SYSTEM\\errors 若错误与系统有关,则错误日志位于:
c:\\mqm\\errors 若错误与MQ客户端程序有关,则错误日志位于客户机的根目录下:
c:\\mqm\\errors 另外,对于MQ for Windows NT/2000平台, 错误信息也会被加在操作系统的Application Log中,通过NT/2000操作系统提供的事件日志也可以检测和察看到。
1.1 日志文件
在MQ产品安装时,在qmgrs路径下会建立@SYSTEM的子目录,在errors子目录下会产生三个日志文件:
AMQERR01.LOG AMQERR02.LOG AMQERR03.LOG 当你建立了队列管理器以后,该队列管理器所需的日志文件随之产生。在mqm\\qmgr\\QMgrName\\errors子目录下会产生三个日志文件:
AMQERR01.LOG AMQERR02.LOG AMQERR03.LOG 每个文件的大小为:256KB。 当错误信息产生后,被放在AMQERR01.LOG中。当AMQERR01.LOG大于256KB时,AMQERR01.LOG中的信息被拷贝到AMQERR02.LOG中,新的错误信息又放在AMQERR01.LOG文件中,依此类推。
因此,最新的错误信息总是存储在AMQERR01.LOG中,历史信息存储在AMQERR02.LOG 和 AMQERR03.LOG中。我们应该按照该顺序察看错误信息,并从该文件中获取信息,根据它的提示采取相应的措施,例如:如果TCP/IP出错,您需要检查一下网络状态是否正常;如果发现无法连接对方的队列管理器,您需要检查一下对方的MQ是否处于运行状态以及对方的通道侦听程序是否启动;如果错误日志显示\通道未在远程定义\,您可以检查您定义的通道的大小写是否正确等。
2 常见故障分析
在开始详细分析问题的原因之前,我们应该首要考虑一下可能导致问题的一些较明显的因素,或导致问题发生的最大可能性因素,这样便于把分析问题的范围限制到最小。 如前所述,有关的MQ的异常情况的发生,通常主要与三方面的因素有关,即:
MQSeries本身 网络 客户的应用 2.1 初步分析
当出现问题时,可从这三方面着手分析原因,这里,列举了一些基本问题,您可以按照此顺序来查找问题的原因。
? ? ?
在此之前MQ是否运行正常?
从最近一次成功运行以来,是否在某些地方作过改动? 在此之前,应用是否运行成功?
如果您的系统曾经运行正常,那麽在出现问题之前,您对哪些部分做了改动,如:有的用户可能由于网络重新规划而更改了某个主机的IP地址,则可能导致通道无法连通;有的用户新设置了防火墙,则需要进行相应的配置,才能使MQ的通道运行正常。如果您没有对系统配置做过更改,您可以分析是否运行环境发生了变化,如:是否由于业务量的加大导致应用程序队列满了,您需要加大队列的最大深度;是否由于连接数量的增加,导致无法建立新的连接,这时,您需要察看在队列管理器配置文件中,与通道相关的MaxChannels和MaxActiveChannels的配置是否足够大。 ?
有无错误信息?
可以察看错误日志,得到错误信息。 ?
是否与MQI应用有关,利用返回码能否解释原因?
对于每一个函数调用,MQ都会返回一个Completion Code和Reason Code,通过MQI返回码Reason Code,可以在API一层,确定错误原因,Reason Code代表的含义可以参考编程手册,或者从cmqc.h头文件中获得。如:RC2035,代表没有操作权限;RC2085,表示没有该对象;RC2080,表示应用程序给出的buffer小于消息的实际大小等。
共分享92篇相关文档