IBMWebsphereMQFAQLastRelease:2006-1-2这里整理了IBMWebsphereMQ的一些常见错误和解决方法,当发现MQ错误而一时无法解决时,可以参阅这里的解决方法,可能有所启发;多个原因可能会引发同一错误现象,为此对某种错误现象列出了好几种解决方法,工程人员需要根据实际情况用相应的解决方法处理。引发MQ错误的原因有很多,这里也无法一一罗列出来,对于无法在这里找到解决方法的错误,请将错误现象发给我(MSN:sqwen_cn@hotmail.com,邮件:sqwen@eastcom-ca.com,wensq@eastcom.com),我会定期将解决方法整理并添加到这份文档里面。1.不能创建MQ队列管理器错误现象:javax.jms.JMSException:MQJMS2005:未能为‘192.168.1.21:'创建MQQueueManageratcom.ibm.mq.jms.services.ConfigEnvironment.newException(ConfigEnvironment.java:546)atcom.ibm.mq.jms.MQConnection.createQM(MQConnection.java:1450)atcom.ibm.mq.jms.MQConnection.createQMNonXA(MQConnection.java:960)atcom.ibm.mq.jms.MQTopicConnection.(MQTopicConnection.java:152)atcom.ibm.mq.jms.MQTopicConnection.(MQTopicConnection.java:114)atcom.ibm.mq.jms.MQTopicConnectionFactory.createMQTopicConnection(MQTopicConnectionFactory.java:337)atcom.ibm.mq.jms.MQTopicConnectionFactory.createTopicConnection(MQTopicConnectionFactory.java:214)atipnet.sqwen.jmstest.JMSSubscriber.subscribe(JMSSubscriber.java:71)atipnet.sqwen.jmstest.JMSSubscriber.main(JMSSubscriber.java:34)解决方法:CCSID不对,修改相应队列管理器的CCSID与JNDI里面定义的相同;一般情况下,通过的队列管理器CCSID为1208,做JMSpub/sub的队列管理器CCSID为819。运行mqMonitor脚本中的mc.sh,查看现在的连接数,是否为100;如果是则是达到了默认情况下通道的最大连接数,需要优化MQ的配置;具体优化的方法是修改/var/mqm/qmgrs/XXX/qm.ini文件,增加:Channels:MaxChannels=xxxxMaxActiveChannels=xxxxxxxx表示需要配置的最大通道数和最大活动通道数,根据实际情况指定,100是默认值,对一般的队列管理器是足够的,对于QM_BASE、QM_DC、QM_TOPIC、QM_PS_FM需要增大为200直至1000,最大值允许为9999。查看这个连接所用的通道是否存在。非JNDI方式的通道配置看配置文件,JNDI方式的话,在JMSAdmin下执行命令disqcf(xxx)或distcf(xxx)获取相应的通道名称,获取通道名称后,到runmqscQM_XXX下dischl(*)查看对应的通道是否存在;2.代理(broker)无响应错误现象:使用MQ队列管理器做JMSpub/sub的时候无法成功,报代理无相应的错误(brokerhasnoreponse)。解决方法:出现此现象的原因是代理(broker)没有启动或代理僵死,解决方法是启动代理或重启代理:endmqbrk–mQM_XXX(只用于重启过程中)strmqbrk–mQM_XXX也有可能是broker出现故障,需要重建:endmqbrk–mQM_XXXdltmqbrkQM_XXXstrmqbrk–mQM_XXX3.队列深度满错误现象:普通的队列管理器报队列深度满的错误解决方法:增加队列管理器的最大深度,默认队列深度为100000,可以根据需要增加为1000000或2000000。上runmqscQM_XXXalterql(Q_XXX)maxdepth(xxxxx)end4.SYSTEM.JMS.ND.SUBSCRIBER.QUEUE队列深度一直满错误现象:系统运行一段时间后,用于JMSpub/sub的队列管理器中的队列SYSTEM.JMS.ND.SUBSCRIBER.QUEUE一直保持在最大深度,即使增加最大队列深度,新增消息也很快使队列积压消息数达到最大深度。解决方法:这种情况下,再次增加最大深度是没有意义的。需要相关的开发人员改进程序,在Publish消息之前,设置TimeToLive(单位为毫秒)的值为较小的值(默认TimeToLive=0,即永久存活),使Publish出去的消息只有有限的生命周期,超过TimeToLive设定的时间值将被MQ队列管理器自动删除5.运行/opt/mqm/java/bin/Cleanup出错错误现象:$Cleanup-mQM_TOPICnondur5648-C60,5724-B41,5655-F10CopyrightIBMCorp.2002.AllRightsReserved.WebsphereMQclassesforJava(tm)MessageService5.300Publish/Subscribe清除实用程序Exceptioninthread"main"java.lang.Unsatisf...