内容


调整 WebSphere MQ Integrator Broker

Comments

© Copyright International Business Machines Corporation 2003. All rights reserved.

引言

IBM® WebSphere® MQ Integrator 消息流以不同的速度来处理消息。这是由于多个因素造成的,例如消息流程的设计、设计的实现、消息代理环境的配置和实现代理所用的硬件。

本文将提供一些建议,以帮助您为使处理消息的速度最大化而配置和调整 WebSphere MQ Integrator 代理和相关组件。本文还分析您应该使用的硬件的类型和速度。本文中的信息适用于 WebSphere MQ Integrator 和 WebSphere MQ Integrator Broker 中的代理,但是为了便于叙述,这两个产品被统称为 WebSphere MQ Integrator。

本文假定您熟悉 WebSphere MQ Integrator 以及任何相关的 WebSphere MQ 队列管理器的配置,因此,本文不讲述这些组件的详细配置。请参阅 Design and Implementation Considerations for WebSphere MQ Integrator Message Flows,这篇文章讨论了有关消息流程的设计和实现的主要问题。

配置和调整

为了提高消息处理的速度,您可以调整以下任何 WebSphere MQ Integrator 组件:

  • 代理队列管理器以及任何连接的队列管理器
  • 代理
  • 用来保存代理和业务数据的数据库

下面的表总结了每个操作系统上用来调整这些组件的选项。本文将以此为序来讲述每个选项的详细信息和建议。

调整选项组件AIX®SolarisHPz/OSWindows® 2000/NT®
WebSphere MQ 组件的拓扑队列管理器
可信通道和侦听器队列管理器
队列管理器日志记录队列管理器
可信代理代理
多个实例代理
多个执行组代理
打开的句柄的高速缓存代理
共享库支持代理不适用不适用不适用不适用
跟踪代理
跟踪数据库
日志和数据 I/O 时间数据库
代理数据库数据库
业务数据库数据库


本文用 Windows 一词来统称 Windows 2000 和 Windows NT 操作系统。还有,本文用 UNIX 一词来统称 AIX、Solaris 和 HP-UX 操作系统。

队列管理器调整选项

为了获得在消息流程中发出的 MQ API 请求的效率,WebSphere MQ Integrator 代理依赖于它的相关队列管理器的性能。这个队列管理器的性能由多个因素来决定,您可以通过调整 WebSphere MQ 组件的拓扑、通道和侦听器以及队列管理器日志记录来影响这些因素。

WebSphere MQ 组件的拓扑

消息流程的输入消息由应用程序来生成,类似地,消息流程的输出消息由应用程序来接收。同一个应用程序可能既生成消息又接收消息。

代理队列管理器和这些应用程序的配置有三类:

  1. 应用程序和代理队列管理器位于同一系统中。
  2. 应用程序连接到(相对代理队列管理器来说)远程的队列管理器。消息流程的输入消息通过 WebSphere MQ 通道到达。类似地,输出消息将通过通道离开。
  3. WebSphere MQ 客户机应用程序连接到代理队列管理器。

为了处理消息,每个配置需要不同的处理量。输入输出消息需要遍历的队列管理器越少,处理消息的成本就越低,由此可获取更快的消息速度。例如,与配置 2 相比,配置 1 需要更少的处理,因为消息已在所要求的队列管理器中。

在更复杂的环境中,总体性能由组件的整体效率来决定。当您试图优化 Integrator Broker 的吞吐量时,您可能需要分析连接的管理器的配置和调整选项。

可信通道和侦听器

在 Windows、Solaris 和 HP-UX 中,在可信方式下可以既运行代理队列管理器通道又运行侦听器。这将明显降低处理消息的成本。但是,建议您仅在稳定的环境中使用可信通道和侦听器,因为通道或侦听器与队列管理器之间的保护级别被降低。

这一选项不用于 z/OS 操作系统。

队列管理器日志记录

日志记录的效率对消息处理的速度有很大的影响。在处理持久消息时,WebSphere MQ 队列管理器必须随着消息的创建和更新而对消息进行日志记录。这涉及在提交消息流程的消息处理的时候同步写到队列管理器日志。

对日志的同步的写使得 I/O 的速度变得重要,所以最好把写高速缓存用于日志所在的磁盘。在使用写高速缓存时,完成 I/O 所花费的时间等于写到高速缓存所花费的时间。磁盘子系统将管理从高速缓存到磁盘的数据复制。高速缓存必须是非易失的以确保在发生灾难性故障(例如停电)时保护日志数据。

与直接写到磁盘相比,写到高速缓存要快很多,所以您可以在处理持久消息时达到明显更快的消息速度。写到高速缓存的磁盘意味着日志 I/O 操作可在 1 毫秒(而不是标准的 SCSI 磁盘所需的 8-10 毫秒)中完成。在 Windows 和 AIX 中,可通过使用带有高速写非易失的高速缓存的 SSA 磁盘来获得写高速缓存。为了在 z/OS 中达到同样的效果,请使用带有功能部件 2121 的 ESS 2105-E20 DASD 子系统或类似的设备。另一种方法是使用固态磁盘。

队列管理器日志的配置因操作系统而异。

Windows 和 UNIX 操作系统
在 Windows 和 UNIX 系统中,可以控制:

  • 写到日志扩展块的最大的大小
  • 日志扩展块的大小
  • 日志扩展块的数量
  • 日志的位置
  • 用循环记录还是线性记录

在 Windows 的注册表和 UNIX 操作系统的队列管理器的 qm.ini 文件中,控制队列管理器日志的配置的值被指定在日志节中。

这些值中最重要的值是写到日志扩展块的最大的大小和日志的位置。为了增加可写的数据量并减少日志扩展块之间的切换量,请使用取值范围的上限。另外,建议您把队列管理器日志定位于它自己的磁盘上。

z/OS 操作系统
在 z/OS 中,您可以控制:

  • 活动日志的数据集的大小
  • 定义多少活动日志的数据集
  • 活动日志的位置
  • 归档日志的位置
  • 用单一记录还是双记录

这些值中最重要的值是活动日志的位置。您应该确保日志被定位于利用率较低的磁盘上。如果您想了解如何设置这些值,请参阅 Capacity Planning and Tuning for MQSeries for OS/390(PDF 文件)。

无论队列管理器运行于哪个操作系统上,您都应该确保日志记录的性能是高效的。您不想让 Integrator Broker 队列管理器或任何连接的队列管理器在日志扩展块之间或归档日志之间不停地切换。但是,应该经常地进行切换以使日志数据被归档,这一点很重要。这将减少在出现故障时恢复所需要的时间。

代理调整选项

WebSphere MQ Integrator 代理的配置和消息流程的分配方式对消息吞吐量有显著的影响。

可信代理

在 Windows、Solaris 和 HP-UX 上,代理可以作为可信应用程序来运行。当代理作为可信应用程序来运行时,WebSphere MQ API 调用被更高效地处理。可信应用程序是一个 WebSphere MQ 概念。在缺省的情况下,WebSphere MQ Integrator 代理不作为可信应用程序来运行。

  • 把代理定义为可信应用程序的方法是在 mqsicreatebroker 命令中使用 -t 标志。
  • 修改现有的代理以使它成为可信应用程序的方法是在 mqsichangeproperties 命令中使用 -t 标志。
  • 把可信代理改为标准方式的方法是在 mqsichangeproperties 命令中使用 -n 标志。

与可信通道和侦听器类似,建议您仅在稳定的环境中使用可信代理。存在损害队列管理器的完整性的可能(例如,错误编写的插件节点)。

多个实例

如果您需要在一个代理中运行消息流程的多个副本,请使用执行组中的消息流程的其它实例。这适用于所有的操作系统(Solaris 除外)。在 Solaris 上,请使用执行组中某个消息流程的一至两个副本(那是消息流程的一个另外的实例)。如果对于该消息流程要求更高的消息吞吐量,请使用多个执行组,每组有消息流程的两个副本。在 Windows 和 UNIX 中,消息流程的每个另外的实例被实现为操作系统线程,在 z/OS 中,它被实现为任务控制块(Task Control Block,TCB)。每个另外的实例有可能使用另外的处理器。

多个执行组

您可以把消息流程分配给一个或多个执行组。执行组在 Windows 和 UNIX 系统上提供进程级别的分离,在 z/OS 上提供地址空间级别的分离。每个另外的执行组有可能使用另外的处理器。

打开的句柄的高速缓存

每个执行组有打开的 WebSphere MQ 队列句柄的高速缓存,高速缓存的缺省大小是 30。在有些情况下,可能有必要增加高速缓存的大小。例如,当:

  • 有许多消息流程被分配给一个执行组,被并发地读或写的队列很可能超过 30 个。
  • 使用了发布/预订,在一个发布活动中,订户的输出队列很可能超过 30 个。

您应该增加高速缓存的大小,使大小的值大于被读写的队列的通常数量。修改高速缓存的大小的方法是使用 mqsichangeproperties 命令。运行该命令的方式因操作系统而异。在 Windows 和 UNIX 系统中,您可以在命令行或 shell 提示符后运行该命令。在 z/OS 中,您必须运行批处理作业。如果您想获得有关如何运行该命令和指定参数的详细信息,请参阅 WebSphere MQ Integrator SupportPacs页面上每个操作系统的 WebSphere MQ Integrator 性能报告。

共享库支持

跟踪

在 Windows 和 UNIX 系统中,在缺省情况下 WebSphere MQ Integrator 附带的库被共享。在 z/OS 中,在缺省情况下每个地址空间将装入库的副本,这将导致对实存储器的需求的增加。因此,在 z/OS 中,建议您实现共享库支持以使 WebSphere MQ Integrator DLL 在地址空间之间被共享。如果您想了解具体的做法,请参阅 WebSphere MQ Integrator V2.1 - Performance Report中的“Section 4.5, Configuring Shared Libraries”。

因为运行跟踪的开销是不可忽略的,所以,当您不在调试问题的时候,确保关闭所有的跟踪很重要。主要的 WebSphere MQ Integrator 相关跟踪是 WebSphere MQ Integrator 产品跟踪(用户和系统)和 ODBC 跟踪。

为了确保 WebSphere MQ Integrator 中的所有的跟踪都被关闭,请使用 mqsichangetrace 命令(级别是 none )。请记住,对于所有的执行组都得这样做。还有,请确保在消息流程的处理路径中没有跟踪节点。在调用跟踪节点时,即使它不写跟踪数据,它也会产生处理开销。

关闭 ODBC 跟踪的方法因操作系统而异。在 Windows 中,您可以通过使用 ODBC 功能的跟踪选项卡(在控制面板中)来控制 ODBC 跟踪。在 UNIX 中,您通过 odbc.ini 文件的 Trace 关键字来控制它。可能的值有 0 (关闭)和 1 (打开)。在 AIX 中,跟踪文件位于 /var/wmqi/odbc/.odbc.ini 。在 Solaris 和 HP-UX 中,它位于 /opt/wmqi/merant/odbc.ini 。在 z/OS 中,您通过设置在代理的(HFS)文件系统中的 DSNAOINI 文件中的 APPLTRACE 关键字来控制 ODBC 跟踪。可能的值有 0 (关闭)和 1 (打开)。

您还应该检查其它产品或系统相关的跟踪,例如在消息流程开发过程中可能用到的 DB2® 跟踪或 AIX 系统跟踪。

数据库调整选项

根据消息流程的构成,数据库调整选项对消息吞吐量有明显的影响。为了提高处理的效率,您可以采取很多措施,例如关闭跟踪、使日志和数据 I/O 时间最小化和调整数据库。

跟踪

尽可能确保关闭所有的数据库跟踪。当您必须使用它的时候,请确保启用必要的最低级别(例如记帐跟踪)。

日志和数据 I/O 时间

当数据库日志位于高速设备(例如带有高速写非易失高速缓存的磁盘)时,数据库更新操作(例如更新、插入和删除)都将受益。原因是这些更新操作都要求同步地写到数据库日志。写的速度越快,消息吞吐量就越大。

一般来说,在关系数据库中对类型不是 BLOB 的数据执行更新操作的时候,数据被缓存,并且把数据物理地写到磁盘中的操作被延迟,直到在数据库管理器中遇到检查点。在这种情况下,数据库数据的 I/O 速度没有日志所在的设备的速度那么重要。当 BLOB 数据被写到数据库的时候,数据没有被缓存而是直接写到磁盘,这使得数据所在的磁盘速度变得很重要。在这种情况下,高速设备(例如带有高速写非易失高速缓存的设备)的使用将优化性能。

代理数据库

调整代理数据库的可能性不大,除非您遇到以下一种或多种情况:

  • 订户在注册或注销发布/预订。
  • 保留出版物正在被使用。
  • 聚集节点正在被使用。

在所有的情况下,建议您确保代理数据库日志定位于高速非易失设备上,因为需要插入数据。

业务数据库

数据库的调整将使访问和更新数据库中的业务数据的消息流程明显受益。以下是一些建议。您的数据库管理员也应该分析数据库的各方面的性能。

  • 在进行数据库表的读活动的地方,请确保缓冲池的大小足够大以使数据和索引的读的命中率较高。
  • 在表的活动是只读的地方,请考虑创建表的只读视图。在消息流程中,引用视图的方式与引用原来的表的方式相同。这将减少数据库管理器必须执行的锁定量从而提高读的性能。
  • 请考虑有多行的数据库表的索引的使用。

WebSphere MQ Integrator 使用动态 SQL 来处理消息流程中的每个数据库调用。尽可能地重用语句是有益的。为了重用语句:

在不同的数据库和操作系统中,动态语句高速缓存的激活是不同的。例如在 DB2 中,在 Windows 和 UNIX 系统中,高速缓存是缺省启用的。在 z/OS 中,它不是缺省启用的。在 z/OS 中启用它的方法是指定 DB2 zparm 参数 CACHEDYN=YESEDMDSPAC=81920

您还应该监视高速缓存的效率。对于每个被执行的动态 SQL 语句,请检查高速缓存是否足够大且高速缓存的命中率是否较高。在 Windows 和 UNIX 系统的 DB2 中,您可以使用 db2 get snapshot 命令来监视高速缓存的利用情况。在 z/OS 中,请使用 DB2 Statistics Trace 中的动态语句高速缓存统计信息(由 DB2PM Statistics 生成)。

硬件注意事项

代理很有可能使用多处理器系统,因为消息流程体系结构支持多线程(或 TCB)、多进程或多地址空间(视操作系统而定)。它是否被实现取决于消息流程的处理特征和运行的消息流程的副本数量。使用高速处理器是重要的,因为多数消息流程常常有许多基于 CPU 的处理量。

即便处理主要利用的是 CPU,I/O 仍有可能制约吞吐量。在这些情况下,您需要减少执行的 I/O 量或减少执行它所需的时间。在理想的情况下,您需要在原先的系统规格中考虑到这一点。

当消息较大(几兆字节而不是几千字节)时,可能需要较多的内存。较大的消息的处理常常更为复杂。较大的消息常常由必须被分别处理的多个较小的消息组成。消息流程的工作集可能很大,因此,所需的物理内存的数量也可能很大。预先预测它是困难的,最好在实际消息流程的早期测试中把它搞清楚。代理机器的具体需求主要取决于消息流程的数量、它们的复杂性和目标消息率。

性能修订包

如果您在运行 z/OS 版的 MQSeries 5.2,请应用 PTF UQ56617 和 UQ65377。

如果您在 Windows 或 UNIX 系统中运行 MQSeries Integrator V2.0.2 并且使用 MRM,请确保安装了 CSD2。它包括 MRM 性能问题的修订包。

结束语

本文分析了在调整 WebSphere MQ Integrator 代理的时候需考虑的主要因素并给出了许多建议以帮助您提高消息处理的速度。本文还分析了代理运行的环境。

本文阐述了高效的消息处理不仅仅包括调整 WebSphere MQ Integrator 代理。您还必须考虑任何连接的队列管理器和数据库管理器。与消息流程设计和实现类似,没有哪一个因素完全控制了性能。您需要考虑所有的因素,这一点很重要。


相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=WebSphere
ArticleID=145694
ArticleTitle=调整 WebSphere MQ Integrator Broker
publish-date=06012003