【问题标题】:MQ : The maximum number of instances of channel was reachedMQ : 已达到通道实例的最大数量
【发布时间】:2019-07-05 19:53:24
【问题描述】:

我有一个连接到 MQ 的 Java 客户端,队列管理器抱怨 The maximum number of instances, 50, of channel 'CHAN' was reached

在哪里以及如何在客户端代码或属性中找到由我的 Java 客户端创建的实例数量?

【问题讨论】:

  • 这是 JMS 还是非 JMS Java 应用程序?您是否在 JMS 应用程序中使用线程池?如果是这样,您为池使用了什么价值,或者它是无限的?即是 60、75 等。

标签: java spring jms ibm-mq


【解决方案1】:

您的应用程序每次连接到队列管理器时都会产生一个新的通道连接(除非它共享连接 - 稍后会更多)。如果您反复连接而不断开连接,您可能会遇到您描述的问题。

您可以使用以下 MQSC 命令(通过runmqsc 工具发出:-

DISPLAY CHSTATUS(CHAN)

在您的情况下,SVRCONN 通道似乎已配置为在发出您看到的错误之前仅允许 50 个连接。这是在 SVRCONN 通道的一个属性上配置的,称为 MAXINSTC(或可能是 MAXINST)。

如果您的 SVRCONN 通道配置为 SHARECNV 设置为 10,您可以在创建第二个 SVRCONN 实例之前通过 SVRCONN 通道的单个实例共享 10 个连接。这可能意味着您实际上在达到 50 个限制之前建立了 500 个连接。您可以通过将上面的命令扩展为:-

查看在 SVRCONN 通道的特定实例上使用的连接数:
DISPLAY CHSTATUS(CHAN) CURSHCNV MAXSHCNV

查看您的 Java 应用程序代码,看看您是否在不需要时重复建立连接,和/或没有断开连接。在问题中发布您的代码以获得进一步的帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-03
    • 1970-01-01
    • 2022-06-10
    • 2017-10-04
    • 1970-01-01
    • 2016-03-05
    相关资源
    最近更新 更多