WebSphere MQ连接调优

时间:2017-02-07 23:02:47

标签: websphere ibm-mq connection-pooling

我有一个应用程序,它使用MDB,激活规范和队列连接工厂来获取/放置来自WMQ的消息。该应用程序预计最大负载为80 tps。 Websphere Application Server和WMQ都是群集的,每个应用程序服务器都连接到单独的主机和通道。应用onMessage方法的方式是在消息被消耗并发送响应之后关闭会话和连接。

根据我们的配置,我们的WAS版本为8.5,IBM MQ队列管理器版本为7,每个节点的act规则的最大服务器会话数设置为40。连接工厂中的最大连接数为每个节点40个,连接工厂的会话池中的最大会话数为10个。 现在在峰值负载上,我们期望最大80个MQ通道实例,但根据调查我们可以看到它超过200,这导致了一个问题,因为达到了最大实例限制。

这是否发生,因为连接工厂的会话池中的最大会话设置为10?

即使我们在onMessage中关闭会话和连接,仍然有一个连接可以有多个会话。如果是这种情况,将此属性设置为1是否明智? 也可以在WMQ上设置一些属性,这可能会导致MQ通道实例的增加。

1 个答案:

答案 0 :(得分:2)

您没有提及WAS或MQ的特定版本,并且在特定版本中可能存在可能会改变行为的已知问题,但通常它应该如下所述工作。

IBM有一个很好的技术支持" TCP/IP Connection usage between WebSphere Application Server V7 and V8, and WebSphere MQ V7 (and later) explained"详细介绍了这个主题。

您没有提及SVRCONN频道的SHARECNV设置为什么,如下所示,这将影响观察到的频道实例数量,我假设默认值为10计算

请注意,以下块引用来自Technote

  • 我们为每个节点的40设置最大服务器会话数

上面的链接指出:

  

最大会话数=最大服务器会话数+ 1

最大对话次数= 40 + 1 = 41

该链接还指出:

  

最大TCP / IP数频道实例 =正在使用的频道的最大会话数/ SHARECNV

最大TCP / IP数频道实例 = 41 / 10 = 5 (向上舍入到最近的连接)

    连接工厂中
  • 最大连接数 每个节点的40
  • 会话池中的最大会话 连接工厂10
  

最大会话数=连接池最大连接数+(连接池最大连接数*会话池最大连接数)

最大对话次数= 40 + (40 * 10) = 440

  

最大TCP / IP通道实例数=正在使用的通道的最大会话数/ SHARECNV

最大TCP / IP通道实例数= 440 / 10 = 44

如果您的MQ SVRCONN频道的SHARECNV设置为10,那么基于连接到单独频道的每个节点,每个频道的频道实例不应超过49个。< / p>

如果您正在点击200个频道实例,我会怀疑您的SHARECNV小于10.如果是1,则WAS尝试创建的最大频道实例数将达到481将受MAXINST频道的200限制。

  

应用程序完成JMS连接并将其关闭后,它将从活动池移动到可用于重用的空闲池。 “连接池”属性“未使用”超时定义JMS连接在断开连接之前将保留在空闲池中的时间。此属性的默认值为1800秒,即30分钟。

           

从WebSphere MQ消息传递提供程序连接工厂创建的每个JMS连接都具有关联的JMS会话池,其工作方式与连接池相同。可以从单个JMS连接创建的最大JMS会话数由“连接工厂会话池”属性“最大连接数”确定。此属性的默认值为10.

     

首次创建JMS会话时会启动会话,并且会在JMS会话关闭之前保持活动状态,因为它在空闲池中保留的时间超过了会话池的未使用超时属性的值。

当您的应用关闭onMessage中的会话和连接时,连接将移至空闲池以供重用,并且会话将移至空闲池以供重用,MQ Channel实例将不会关闭,直到相应的超时被命中

如果您希望保持最大通道数少于200,那么您可以将会话池最大连接数调整为1,并将其与激活规范相结合,并且SHARECNV(1)将最大化121个频道实例。

您还可以增加通道的SHARECNV值,这将导致将通道实例除以该数字。

您的连接或会话可能无法正常关闭,并且您有&#34;泄漏&#34;。