队列管理器在什么情况下可以将其连接断开到集群环境中的存储库?
我有一个环境,其中队列管理器经常失去与存储库的连接,并且我需要刷新集群以解决此问题并与集群中的其他队列管理器重新建立通信。
我们的集群有100个队列管理器,其中有2个存储库。
最佳答案
有几个不同的问题可以导致此。一种是是否有明确定义的CLUSSDR
通道指向非存储库QMgr。这导致存储库消息到达非存储库QMgr,这可能导致其amqrrmfa
存储库进程终止。另一个是,有一些APAR(例如this one)可能导致该进程终止。解决方案分别是解决配置问题或应用最新的修订包。另一个较不常见的问题是,在新QMgr可以解析为本地QMgr之前,发送给新QMgr的消息将出错。在这种情况下,REFRESH
实际上并不会导致远程QMgr解析,它只是为解决提供了时间。
调试涉及隔离可能的原因。检查amqrrmfa
是否正在运行。检查所有非存储库QMgr是否具有一个且只有一个明确定义的CLUSSDR通道。验证所有存储库都具有一个,并且每个存储库只有一个明确定义的CLUSSDR。如果使用重叠的群集,请确保不要重叠通道。这意味着避免使用像TO.QMGR
这样的频道名称,而喜欢像CLUSTER.QMGR
这样的频道名称。通过确保通道不使用CLUSNL
属性并使用CLUSTER
属性来验证这一点。最后,通过发出DIS CLUSQMGR(*)
和DIS QCLUSTER(*)
协调存储库和非存储库中的对象。储存库应具有相同的对象清单。如果那是错误的,那就是问题所在。对于非存储库,以前与其交谈过的每个QMgr都应有一个条目。
我过去看到的一件事是管理员已安排REFRESH CLUSTER
。他的想法是,这是修复集群所需的工作,所以为什么不定期运行它呢?因此,他安排它每天运行。然后,每天晚上,它使QMgr忘记了群集中的其他QMgr,并且每天一次应用程序第一次解析远程QMgr时,都会出现大量存储库流量。这造成了足够的延迟,每天早晨有2087个错误。不是说您会做这样的事情。 :-)
关于ibm-mq - IBM MQ集群连接问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9159384/