【问题标题】:MQ process amqrmppa keep increasingMQ进程amqrmppa不断增加
【发布时间】:2017-03-16 07:04:11
【问题描述】:

美好的一天。

我遇到了一个问题,即 MQ 进程 amqrmppa 不断增加,目前存在 635 个进程。前 2 天它只有 2++ 个进程,但一直缓慢增加直到当前值。

MQ 版本 = 8.0

操作系统 = AIX 7

这个过程预计会增加,直到我们的 maxuproc 限制为 1024。

当我运行命令时,

echo "dis chs(*)" | runmqsc MYMQ | grep channel | wc -l

出现的输出是268。

这是否意味着amqrmppa使用的实际进程是268?

【问题讨论】:

    标签: ibm-mq


    【解决方案1】:

    amqrmppa 进程是 MQ 的通道池进程,默认情况下将使用线程和新进程实例进行扩展。当它像这样增加时,有两种可能性。

    1. 内存泄漏。该问题未提及完整的版本号。当包含修订包级别时,它将是点分四边形格式,例如8.0.0.1,其中8.0 是主要版本,0.1 是支持流和修订包。当 Fix Pack 已知时,可以通过 APARS 查看它是否是已知问题。
    2. 应用程序错误。当应用程序不正确地终止客户端连接时,它会留下一个孤立通道实例。这些最终会超时,但是池化进程释放线程的速度很慢,因为重用线程比从头开始重建整个进程更快。因此,进程数通常反映了最近启动通道的高水位线。

    一般而言,糟糕的编程或外部因素(例如防火墙超时)比 MQ 代码错误更可能是根本原因,但是每个修订包中的 APAR 数量证明这些确实会发生。您可能想要调整MAXCHAN 设置,以便没有一个应用程序可以启动超过合理数量的并发通道实例。您可能还想安装BlockIP2 或LogIP(来自Mr. MQ)并记录连接尝试。

    还有一些注意事项:

    • 通常,由于将通道分配给线程,进程数少于并发通道数。虽然这是可调的,并且本地 QMgr 可能会将通道设置为 PROCESS 而不是 THREAD。此外,如果通道由inetd 启动,则结果是每个进程一个通道。 (在现代 QMgr 中不要这样做!)
    • 为什么要使用maxuproc=1024?根据 MQ v8.0 的信息中心,on AIX this value should be 64000。如果没有执行推荐的内核调整,那么明显的进程泄漏是您可能会看到的最良性错误之一。运行mqconfig 程序并遵循它给出的建议。 (我相信 mqconfig 在 AIX 上运行,您还需要为其提供可执行文件的完整路径名。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-31
      • 1970-01-01
      • 2019-06-16
      • 1970-01-01
      • 1970-01-01
      • 2015-05-25
      • 2017-04-02
      相关资源
      最近更新 更多