WebSphere MQ 性能调优详谈(四)

四、与channel有关的MQ性能考虑因素:

  1. 选择侦听程序(Listener)的线程/进程运行方式:

MQ的侦听程序有两种配置和启动方式,一种是通过配置/etc/inetd.conf文件选择使用inetd方式, 也可以使用MQ自身提供的runmqlsr程序,所不同的是:runmqlsr 是一个线程应用,所以比inetd需要更少的内存消耗。因此,采用runmqlsr方式可以提高通道相关的性能。

  1. 选择通道的线程/进程运行方式

与侦听程序类似,与MQ通道对应的MCA代理程序也可以有线程和进程两种运行方式,可以通过定义通道的MCATYPE属性来设置通道MCA的运行方式为thread方式。让通道以线程方式运行而非进程方式运行,这样可以减少通道运行的进程个数和消耗的内存资源。

对于以上两点,要注意的是:当通道的连接个数很多时,如在Unix平台上超过500个时,建议MCATYPE和listener采用进程的方式。

  1. 设置侦听程序的trusted运行方式
  2. 与MQ应用程序类似,MQ的通道侦听程序也有trusted(fastpath)和non trusted(standard)两种运行方式,采用trusted运行方式可以降低CPU和内存消耗。将通道和侦听程序设置为trusted方式运行的方法是通过修改qm.ini配置文件中的MQIBindType参数来实现,即创建或修改qm.ini文件中与Channels相关的小节,例如:

Channels:

  1. MQIBindType=FASTPATH 或者
    MQIBindType=STANDARD

其中,FASTPATH表示trusted运行方式,而STANDARD表示非trusted运行方式。

  1. 加大通道的PipeLineLength属性
  2. 从MQ版本V5.2开始,MQ提供了一个新的通道参数,即PipeLineLength属性,通过该属性,可以设置MCA采用多个线程的方式来传输消息,从而成为提高通道性能的又一个手段。缺省情况下,该参数数值为1,任何大于1的设置MQ本身都会将其设置为2。

设置PipeLineLength的方法是修改qm.ini文件的Channels一节,如下:

Channels:

  1. PipeLineLength=2

注意,必须在通道两端都进行设置,否则会自动取两者之间的最小值。

  1. 设置MaxChannels和MaxActiveChannels属性
  2. MaxChannels和MaxActiveChannels分别代表队列管理器允许配置的通道的最大个数和允许同时运行的通道的个数,MaxChannels的缺省值是100,MaxActiveChannels的缺省值与MaxChannels相同。如果您的并发通道连接个数超过了100,您需要修改这两个参数。这对于大并发的Client/Server间通讯尤为重要。
  3. 调整通道的Batchsz( )属性
  4. 通道的Batchsz( )值是影响通道性能的一个关键参数。在MQ进行消息传输时,通道对消息的处理也是在同步点的控制之下并具有交易特性的,在以下条件满足时,它将统一提交一批消息:
    当发送的消息个数达到BATCHSZ时;或传输队列为空,并且在BATCHINT指定的时间间隔内一直没有消息到达时。

缺省情况下,通道的Batchsz是50,这是一个较为合理和优化的设置。一个小的Batch size值会使每条消息占用大的资源。比如,假设我们在局域网的情况下,Batch size值越大,通道的性能越好。然而,在广域网环境下,要根据网络状况的好坏来设置该参数,若网络状况很差,Batch size值越大,可能会导致通道的性能越差。

  1. 推荐在两个队列管理器之间同方向上建立一条通道。
  2. 设置通道的NPMSPEED(FAST)属性。

如前所述,MQ的消息分为永久性消息和非永久性消息两种,对于非永久性消息,通道属性NPMSPEED可以设置为FAST和NORMAL,为了提高性能,可以设定该属性为FAST。

除了队列、队列管理器日志大小、通道和API的使用和设置对MQ性能的影响之外,MQSeries的性能与系统的资源或性能息息相关,如系统的CPU, RAM, Disk (I/O), network等方面的配置会直接影响WebSphere MQ的性能.

以下文章点击率最高

Loading…

发表评论