【问题标题】:MQ max connections issueMQ 最大连接数问题
【发布时间】:2014-08-30 10:36:18
【问题描述】:

我有一个通过 10 个连接连接到 MQ 的 Java 客户端。这些在 Java 客户端运行期间保持打开状态。对于每个线程,我们创建一条消息,创建一个会话,发送消息并关闭会话。我们正在使用 Spring CachingConnectionFactory 并且 sessionCacheSize 为 100。我们的 MQ 工程团队告诉我们,我们的队列管理器的最大连接数为 500,并且我们已经超过了这个值。 QM.ini 文件有:

maxChannels=500
maxActiveChannels=256
maxHandles=256

我在 MQ 资源管理器中观察到,队列上的打开输出计数保持静态为 10,但是如果我们在 2 个队列之间进行负载平衡,则每个队列为 10,即使我们仍然只有 10 个连接。那么我想知道的是,jms 连接和会话在 MQ 术语中是什么意思?

我确实认为一个连接等同于一个活动通道,一个会话是一个句柄,所以当我们打开(和关闭)的会话数量达到数百或数千时,我们可能超过了句柄,而我们只有10个连接。尽管与此相反,IBM 技术说明“Explanation of connection pool and session pool settings for JMS connection factories”下面的 sn-p 建议最大通道数应大于最大会话数,但我们永远不知道这一点,因为它取决于负载(除非这应该大于sessionCacheSize?)。

每个会话都代表一个到队列管理器的 TCP/IP 连接。 使用这里提到的设置,最多可以有 100 个 TCP/IP 连接。如果您使用的是 WebSphere MQ,那么调优很重要 队列管理器的 MaxChannels 设置,位于 qm.ini 文件中, 到一个大于最大可能数量之和的值 来自连接到队列的每个 JMS 连接工厂的会话 经理。

任何关于如何最好地配置 MQ 的帮助将不胜感激。

【问题讨论】:

    标签: java spring jms ibm-mq


    【解决方案1】:

    假设您在 MQ 通道上的最大会话数设置为 1(在 MQ v7 和 v7.5 中默认为 10),那么 JMS 连接将导致 TCP 连接(MQ 通道实例)和 JMS 会话将导致另一个 TCP 连接(MQ 通道实例)。

    从您的更新看来,您配置了 10 个 JMS 连接,并且 Spring 中的 sessionCacheSize 设置为 100,因此 10 x 100 意味着正在创建 1000 个潜在的 MQ 通道实例。打开的输出计数将显示有多少“活动”JMS 会话正在尝试发送消息,而不一定有多少已被“缓存”。

    MQ 通道上的对话共享在这里可能会对您有所帮助,因为它定义了可以通过一个 TCP 连接(MQ 通道实例)共享多少个逻辑连接。因此,默认 10 个会话意味着您可以创建 10 个仅通过一个 TCP 连接运行的 JMS 会话。

    【讨论】:

    • 您好,感谢您的回复。请原谅我的无知,但最大对话是否与 qm.ini 文件中的最大频道或最大活动频道有关,或者两者都没有?我们似乎正在超越这些属性。是否仅在超出会话限制时才为会话创建创建 TCP 连接,还是所有会话都会发生这种情况?此外,我们有一个 CachingConnectionFactory 实例,所有连接都是由此创建的,每个连接的会话缓存大小(而不是所有连接的 100 个)?
    • 最大通道数表示您可以在队列管理器上定义的通道数。而 Max Active Channels 表示队列管理器上可以活动的通道实例数。 Max conversations 是通道本身的一个属性,它控制在一个通道实例上可以多路复用多少个不同的逻辑连接。 qm.ini 属性将在队列管理器范围内,因此可能不仅仅是您的应用程序连接。您应该询问您的 MQ 管理员有多少通道实例用于通道。
    • 好的,我明白了。那么在这种情况下,单个 CachingConnectionFactory 的 sessionCacheSize 是在所有连接之间共享(因此 10 个连接为 100 个)还是每个连接(1000 个)共享?
    • 阅读 Spring 文档以获取更多详细信息,它唯一说的是缓存是“每个 JMS 会话类型”。所以我不能确定它是使用该 CachingConnectionFactory 创建的每个 JMS 连接的缓存还是整个 CachingConnectionFactory 的缓存,这听起来像是要问的另一个 SO 问题。
    • 是的,我得出了同样的结论。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多