用于提高 HTTP 客户机性能的连接池
对于作为 HTTP 客户机的 CICS® ,如果多次调用 CICS Web Support 应用程序, Web Service 应用程序或 HTTP EP 适配器针对同一主机和端口发出连接请求,或者 Web Service 应用程序发出多个请求和响应,那么连接池可提供性能优势。
- 对于发出 HTTP 客户机请求的 CICS Web Support 应用程序,当应用程序发出 WEB CLOSE 命令以通知 CICS 已完成使用该连接时, CICS 将关闭连接。 如果应用程序未发出 WEB CLOSE 命令,那么 CICS 将在到达任务结束时关闭连接。
- 对于作为服务请求者的 CICS Web Service 应用程序, CICS 在应用程序使用 INVOKE SERVICE 命令发出其服务请求并收到响应 (如果适用) 后关闭连接。
- 对于 CICS 事件处理, CICS 在 HTTP EP 适配器发出业务事件后关闭连接。
设置连接池时, CICS 不会在使用后关闭客户机 HTTP 连接,而是会使连接保持打开状态,并将其存储在处于休眠状态的池中。 相同应用程序或连接到相同主机和端口的其他应用程序均可复用休止的连接。 当应用程序发出命令以打开客户机 HTTP 连接时, CICS 会检查该主机和端口的池中是否有休眠连接,如果有,请将其提供给应用程序,而不是打开新连接。
复用合用连接时,与打开新连接相比, CPU 使用率会降低。 由于复用连接时无需重复安全措施,因此对于连接使用安全套接字层 (SSL) 的情况,可节省更多的资源。 应用程序复用合用连接的方式与使用新连接的方式完全相同,连接在使用后可再次放入池中。
连接池由 URIMAP 资源中的 SOCKETCLOSE 属性指定,该属性定义在 CICS 应用程序完成使用其客户机 HTTP 连接之后, CICS 是否以及在多长时间内保持套接字处于打开状态。 应用程序打开连接时必须指定 URIMAP 资源。
HTTP EP 适配器需要 URIMAP 资源才能打开连接。 对于来自 CICS Web Support 和 Web Service 应用程序的 HTTP 客户机请求, URIMAP 资源不是必需的,但它们具有许多优点。 除了启用连接池之外,将 URIMAP 资源用于客户机连接时,系统管理员可管理对连接端点的任何更改,如果服务提供者的 URI 发生更改,您无需重新编译应用程序。 对于 CICS Web Support 应用程序, URIMAP 资源还可用于存储和管理 SSL 的客户机证书和密码套件代码。
- 多个 CICS Web Support 应用程序 (调用同一应用程序或不同应用程序) 向同一主机和端口发出 HTTP 客户机请求。
- 作为服务请求者的多个 CICS Web Service 应用程序向同一 Web Service 提供程序发出请求。
- 作为服务请求者的 CICS Web Service 应用程序在单个任务中向 Web Service 提供程序发出多个请求。
- HTTP EP 适配器可频繁地向事件绑定中指定的 HTTP 服务器发送事件。
CICS 如何管理连接池
连接池对于应用程序是透明的,在 URIMAP 资源定义中指定 SOCKETCLOSE 属性后,无需任何管理员参与。 CICS 保存具有非零 SOCKETCLOSE 属性的每个 URIMAP 资源的连接池。
- 来自服务器的最后一个 HTTP 响应不是“同意”。
- 连接上请求数目和响应数目不相等。
- 该连接上仍存在 CICS 应用程序未接收的数据。
当应用程序发出命令以打开 HTTP 客户机连接并且池中提供了适当的连接时, CICS 会选择最近放置在池中的连接。 这一做法可在连接使用率相对上一峰值级别有所下降的情况下使较旧的连接到期。 当合用的连接达到 SOCKETCLOSE 属性中指定的时间限制而未复用时, CICS 将关闭套接字并除去连接。
- Web 服务器关闭连接。
- 您废弃与连接池关联的 URIMAP 资源。
- 针对 CICS 区域达到 MAXSOCKETS ,不同连接需要使用套接字。
- URIMAP 资源的 SOCKETCLOSE 设置
- 该 URIMAP 资源的池中合用的连接的当前数目和峰值数目
- CICS 由于 CICS 区域已达到 MAXSOCKETS 限制而从池中回收的休眠连接数
- 池中未复用且未到期的休止连接的数目
在 TCP/IP: 全局统计信息中报告在区域范围内复用连接的次数。
如何确定 CICS 中出站连接池的 SOCKETCLOSE 值
- URIMAP 套接字池大小
- URIMAP 峰值套接字池大小
- 收回的 URIMAP 套接字数
- 超时的 URIMAP 套接字数
您无需过于关注 Socket池大小
或 Peak socket池大小
,因为它们纯粹受使用特定URIMAP的并发请求数量的影响。 如果预期不会频繁使用该特定的 URIMAP,那么使用较高值只是为了引起关注。
“回收的套接字”的数量是指 CICS 没有可用的套接字来处理新的请求,因此关闭了池中的一个空闲套接字,并将其重新用于新的请求。 如果回收的套接字数量很多,则可能表明系统正在处理的工作量
超过了其在 CICS 系统初始化参数(DFHSIT)中的MAXSOCKETS设置。 如果出现这种情况,那么您应考虑增加 MAXSOCKETS 设置。
- 套接字的使用并不频繁,它们在池中保持空闲状态直到达到 SOCKETCLOSE 值
- SOCKETCLOSE 值过小,并且套接字在有机会被复用之前已被关闭
在这种情况下,应增加 SOCKETCLOSE 的值以使套接字能够被复用。 如果超时的数目为 0 或者相对较小,那么表示池在正常工作并且套接字正被主动复用。