开发消息流的系统注意事项

缺省堆栈大小

当执行消息流线程时,它需要存储器执行由其连接的节点的逻辑所定义的指令。该存储器来自执行组的堆和堆栈大小。分配到消息流线程的缺省堆栈大小取决于使用的平台。

每个消息流线程分配到 1MB 的堆栈空间。

每个消息流线程分配到 8MB 的堆栈空间。

每个消息流线程分配到 1MB 的堆栈空间。

每个消息流线程分配到 512KB 的下行堆栈空间和 50KB 的上行堆栈空间。

在消息流中,节点通常使用约 2KB 的堆栈空间。因此,典型的消息流大约在 z/OS 平台上包含 250 个节点,在 UNIX 平台和 Windows 上包含 500 个节点。这个数字的大小取决于所使用节点的类型和它们执行的处理。

增加 WindowsUNIX 平台上的堆栈大小

可通过将 MQSI_THREAD_STACK_SIZE 环境变量设置为适当值来增加堆栈大小。当重新启动运行于系统的代理时,代理将使用新的值。

您所设置的 MQSI_THREAD_STACK_SIZE 值用于在 DataFlowEngine 进程中创建的每个线程。 如果执行组中指派了许多消息流,且为 MQSI_THREAD_STACK_SIZE 设置了较大的值,则 DataFlowEngine 进程将因此需要大量存储器以用于堆栈。

增加 z/OS 上的堆栈大小

z/OS 上的集成程序组件使用新的 XPLINKage(额外的性能链接)进行编译,从而使运行时代码最优化。但如果初始堆栈大小不够大,则会使用堆栈扩展数据块。每个扩展数据块中使用 128KB。请务必选择足够大的下行堆栈大小,这是因为使用堆栈扩展数据块时,XPLINK 的执行性能会非常差。

要确定合适的堆栈大小,z/OS 的组件管理员可使用 LE(Language Environment®)报告存储器工具。要完成此操作,您必须将 RPTSTG 选项用于 _CEE_RUNOPTS 环境变量来对消息流进行测试。应当在用于生产的消息流进行开发和测试期间在组件概要文件(代理的 BIPBPROF)中对此进行设置。例如:
export _CEE_RUNOPTS=XPLINK\(ON\),RPTSTG(ON)
然后,您可以通过在组件概要文件中更改或添加 LE_CEE_RUNOPTS 环境变量来覆盖 z/OS 上堆栈大小的缺省值。

当更新组件概要文件时,必须停止组件、对概要文件进行必要的更改、提交 BIPGEN 以重新创建 ENVFILE,然后重新启动该组件。

例如,可以更改下面一行中的缺省值 50K 和 512K 来符合您的需要:
export _CEE_RUNOPTS=XPLINK(ON),THREADSTACK(ON,50K,15K,ANYWHERE,KEEP,512K,128K)

使用 RPTSTG 可延长应用程序运行的时间。因此,您应该将其作为辅助仅用于消息流开发和最终的生产环境。如果已确定了所需的正确堆栈大小,您应该从 _CEE_RUNOPTS 环境变量中除去该选项。

注: XPLINK 堆栈在虚拟存储器中不断减少,而老的标准链接则在不断增长。要避免在运行时期间在下行堆栈空间和上行堆栈空间之间进行切换所导致的性能影响,您应该在合适之处使用 XPLINK 选项来编译用户定义的扩展。如果您的消息流使用用户定义的扩展,且这些扩展已用标准链接约定进行编译,则您需要确定并设置一个适合于上行堆栈大小的值。

确定正确的堆栈大小

WebSphere Message Broker 中,任何包含嵌套或递归的处理都可增加堆栈的使用。例如,在以下情况中,您可能需要增加堆栈大小:
  • 当消息流处理包含大量循环或复杂嵌套的消息时。
  • 当消息流执行递归地调用相同过程或函数的 ESQL 时,或者当运算符(如并置运算符)反复在 ESQL 语句中使用时。
相关任务
优化消息流响应时间
相关参考
消息流
声明 | 商标 | 下载 | 书库 | 支持 | 反馈
Copyright IBM Corporation 1999, 2006 最后一次更新时间:2006/08/14
ac00340_