【问题标题】:Cause for disagreement in queue depth between runmqsc and MQ Explorerrunmqsc 和 MQ Explorer 之间队列深度不一致的原因
【发布时间】:2014-12-18 16:39:17
【问题描述】:

我们有一个使用runmqsc的监控工具,命令如下:

display qstatus(*) curdepth ipprocs

为警报目的检索队列深度(a)

脚本分析输出并将信息提供给数据库,所以我只是在等待上述命令的 raw 输出,以确保脚本没有问题。这不太可能,因为所有其他队列都报告正常。

所以问题在于,它报告的特定队列的深度为 139,并且该值已经持续了好几个小时。然而,那个盒子上的 MQ Explorer 似乎认为队列中只有 8 条消息。

因此我的问题是(希望)一个简单的问题:在什么情况下display qstatus curdepth 会在队列深度方面不同意 MQ Explorer?我应该从runmqsc 收集一些其他指标以获得正确的深度吗?或者 MQ Explorer 不一定可靠? (b)


(a) 产生警报的目的,而不是您应该警惕的目的。

(b) 是的,我知道这是三个问题。我更愿意将其视为相同问题的三个方面。

【问题讨论】:

    标签: ibm-mq


    【解决方案1】:

    runmqsc 和 MQ Explorer(通过 PCF)都显示队列管理器提供给它们的相同值。如果两个命令恰好同时发出,它们就会给出答案。当然,CURDEPTH 是可以快速变化的东西,所以请确保它不仅仅是使用一种工具和另一种工具发出命令之间深度的实际变化。

    【讨论】:

    • 深度为 8 已持续数周,这是我们仅执行相关 GET 的结果,这意味着我们超时等待的消息(并且仍然在稍后出现)留在队列中。然后,在我发布问题前八小时,出于完全相同的原因,它跃升至 140 多个。虽然队列深度由于消息的传入和被检索而上下波动,但那些 140 多个从未改变过(想想8 9 8 9 8 9 10 9 8 140 141 140 141 140 ...)。所以我很确定这不是 Explorer 和 runmqsc 之间的时间问题。
    • 话虽如此,我刚刚收到来自支持机构的通知,当他们关闭 Explorer 并重新启动几次时,它最终变得良好并开始报告更高的数字。因此,这可能是“最佳”答案,因为它增加了延迟的可能性。为什么需要几天时间以及为什么必须多次重新启动,我不知道,但现在已修复。从现在开始,我只信任 runmqsc :-)
    【解决方案2】:

    MQExplorer 的默认刷新间隔为 15 秒,这意味着每 15 秒使用队列管理器统计信息刷新 MQExplorer 内容。另一方面,runmqsc 命令在执行命令时显示静态数据。因此,“不同意”可能是由于未刷新 MQExplorer 视图。

    【讨论】:

    • 好点,我应该提到队列在大约八小时前的凌晨时分上升到 139。我会澄清这个问题。
    【解决方案3】:

    您执行了错误的命令。 QStatus 正在报告高值并将继续报告,直到对队列执行 ResetQ 命令,然后它会再次报告高值。

    您应该使用以下 MQSC 命令:

    display qlocal(*) curdepth ipprocs
    

    【讨论】:

    • display qstatus 的文档将curdepth 描述为“队列的当前 深度,即队列中的消息数”(我的粗体字)。是什么让你认为它持有高水位线?作为测试,我将 7000 多个事务放入队列中,qstatusqlocal 都拥有该数量的 curdepth。当我清空队列时,两者都报告为零。
    • 罗杰,我认为你将 Qstats 与 Qstatus 混淆了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-29
    • 1970-01-01
    • 1970-01-01
    • 2012-07-16
    • 1970-01-01
    • 2013-12-16
    • 1970-01-01
    相关资源
    最近更新 更多