Liberty 的优化本地适配器性能注意事项
WebSphere® 优化本地适配器 (WOLA) API 旨在为外部地址空间与 Liberty for z/OS® 上的应用程序之间的调用提供最佳性能。这些 API 通过支持在这些环境中的应用程序之间进行细粒度的交互来建立新种类的应用程序模式。通过为系统选择最佳配置选项,可以最大限度地发挥使用优化本地适配器的性能优势。
为注册 API 调用选择最小连接数值和最大连接数值
为注册 API 调用选择太大的最小连接数值可能会降低性能。因为已建立的每个连接将一直保持到调用注销 API 为止,所以太大的最小连接数值将消耗更多内存,并且增加完成每个注册和注销 API 调用所需要的时间。请选择最小的能够满足您需要的最小连接数值;例如,如果数百个同时执行的线程可能会共享注册,那么对于具有较大的最小连接数值的注册提供更多专用内存和时间可能会有意义。如果您期望只有很少的并发线程,请设置较小的最小连接数值。
如果客户机在请求连接时必须等待连接,那么为最大连接数选择太小的值也可能会降低性能。超过最大连接数值时,调用线程将等待在连接获取、调用、接收任何请求或者主机服务 API 的“等待时间”参数中所指定的秒数,连接才会变得可用。当此时间到期时,会传递回返回码和原因码,指出在等待时间到期之前,未能获取请求的连接句柄。请选择最满足您所在环境的预期需要的最大连接数值。
当您启动 CICS 链接服务器时选择最大连接数值
当您在客户信息控制系统 (CICS®) 中启动链接服务器任务,但未指定最小连接数 (MNC) 和最大连接数 (MXC) 参数时,MNC 将缺省设置为 1,MXC 将缺省设置为 10。MXC 参数的值指定链接服务器任务 (BBO$) 可以启动和同时运行的链接调用任务 (BBO#) 数。因此,该值还会限制 Liberty 服务器上可以运行和启动 CICS 目标程序的并发线程数。
选择一个 MXC 值,该值将反映在链接服务器的此实例下启动的典型目标 CICS 程序的期望持续时间。例如,如果目标 CICS 程序大部分都长时间运行,那么更大的 MXC 值适合于使请求从 Liberty 服务器保持高效地传递到 CICS。如果目标程序的生存期短暂,那么使用较小的 MXC 值更高效。
共享 64 位内存
在 Liberty 服务器中启用了优化本地适配器功能部件时,该服务器在 z/OS 中将获得超过 2 GB 以上的 32 MB 共享内存。所有具有相同 wolaGroup 名称的 Liberty 服务器将共享此内存,并存储共享优化本地适配器控制结构。
将分配超过 2 GB 以上的其他共享内存,以存储在客户机与 Liberty 服务器之间传递的消息。传递消息时所需要的存储空间量取决于所传递的消息的平均大小,并且必须有足够的共享内存来存放任何时候存在的所有消息数据。会根据需要来分配更多内存。
如果应用程序继续调用“注册”API 且进行循环,而不调用“注销”API,也没有终止(终止时将自动清除这些注册),那么它会使 WOLA 组的优化本地适配器的共享内存缓冲区溢出。如果发生这种情况,那么会返回 API 调用,并提供表明内存不足的原因码。
您可以粗略估计应用程序需要的 WOLA 共享内存量。每个客户机注册需要使用 384 个字节的共享内存,再加上每个连接需要 192 个字节的共享内存。具有最大值 100 个连接的注册将使用大约 20 KB 共享内存。每个客户机线程将额外使用 80 字节(如果所有连接都处于使用状态,那么必须等待连接变得可用)。注册主管的每项服务将额外使用 384 个字节。
200 个注册 x 384 个字节 = 76,800 个字节 200 个注册 x 200 个连接 x 192 个字节 = 7,680,000 个字节 200 个注册 x 1000 个等待线程 x 80 个字节 = 16,000,000 个字节 ----------------------------------------------------------------- 23,756,800 个字节 33,554,432 个字节 – 23,756,800 个字节 = 剩余 9,797,632 个字节 / 每项服务 384 个字节 ----------------------------------------------------------------- 25,514 项服务
优化本地适配器 CICS 链接服务器性能注意事项
可以将 CICS 链接服务器的优化本地适配器用作从正在 Liberty 服务器上运行的应用程序调用现有 CICS 应用程序的一种简单方法。当您启动链接服务器时,优化本地适配器链接服务器任务 (BBO$) 将启动,并接收来自 Liberty 服务器的程序链接请求。接收到链接请求时,链接服务器任务 (BBO$) 将启动程序链接任务 (BBO#),而程序链接任务 (BBO#) 又会向目标程序发出 EXEC CICS LINK 命令,接收响应,并将响应发送至 Liberty 服务器调用者。要执行这些操作,通过对 BBOC START_SRVR 命令设置 SEC=Y 参数,将 Liberty 服务器上应用程序的线程级别身份传播和断言到目标 CICS 任务上。
如果您在 REU=Y 情况下运行链接服务器,那么程序链接任务 (BBO#) 将保持活动,直到对注册输入了 BBOC STOP_SRVR 或 UNREGISTER 命令为止。如果您还在运行时使用较大的最大连接数 (MXC) 值,并且有大量请求同时到达,那么活动程序链接任务数 (BBO#) 可能会达到 CICS 最大并发任务阈值。有关设置 CICS 最大并发任务阈值的更多信息,请参阅您的 CICS 版本的文档。
当您在 CICS 下从 Liberty 服务器调用应用程序时,要获得最高性能,请直接在应用程序中编写“主机服务”API、“接收任何请求”API 或者“接收特定请求”API 的代码。但是,直接编写 API 并未对链接服务器提供的身份传播提供内置支持。
有关使用 JCA 资源适配器的注意事项
当您使用优化本地适配器 JCA 资源适配器时,从 ConnectionFactory 对象获得的每个连接都需要额外的内存开销。如果应用程序使用同一应用程序方法对外部地址空间或者 CICS 进行若干调用,那么可以通过对每个交互使用同一连接以及在应用程序方法中使用同一 JCA 交互对象来获得更高性能。
当您为优化本地适配器创建 JCA ConnectionFactory 对象时,可以修改该 ConnectionFactory 的 JCA 连接池的最小大小和最大大小。连接池表示绑定至您在交互期间调用“注册”API 时所指定的物理连接的逻辑连接。为了获取最佳性能,请将 JCA 连接池大小设置为您在进行“注册”API 调用期间设置的物理连接池的相同大小。如果 JCA 连接池太小,即使存在可用的物理连接,应用程序也可能需要等待 JCA 连接对象。