XISCONA 出口
XISCONA 的用途是帮助您防止在发出区域中排队等待非 IPIC 连接的空闲会话的函数输送或 DPL 请求时可能发生的性能问题。 出口允许您通过允许您拒绝以其他方式排队的任何函数输送或 DPL 请求来控制未完成的 ALLOCATE 请求数。
如果您已有 XISCONA 出口程序,那么可以对其进行修改以在 XZIQUE 出口点使用。
"争用获胜者" 是用于 LU6.2 连接的术语。 XISCONA 出口也适用于 MRO 和 LU6.1 连接: 在这些连接中, SEND 会话 (在会话定义中定义) 首先用于 ALLOCATE 请求; 当所有 SEND 会话都在使用时,将开始排队。
缺省情况下,如果所有绑定的争用获胜者会话都处于繁忙状态,那么针对资源拥有区域的函数输送和 DPL 请求将排队,以便没有任何会话立即可用。 如果资源拥有区域无响应 (例如,如果它是文件拥有区域,那么它可能正在等待要归档的系统日志) ,那么队列可能变得太长,以至于发出区域的性能严重受损。 此外,如果发出区域是应用程序拥有区域,那么受影响的性能可能会 传回至终端拥有区域。
- 如果 XISCONA 出口程序 未 处于活动状态,那么 CICS 将在必要时对请求进行排队。
- 如果出口程序处于活动状态,那么 仅当所有绑定的争用获胜者会话都在使用时才会调用该程序。 对于其他故障 (例如, "未找到方式名称" 或 "服务中断") , CICS 会绕过出口并返回到应用程序。
- 如果调用了它,那么出口程序必须通过分析通过用户出口参数列表提供的统计信息来决定是否对请求进行排队。 您的出口程序可以:
- 规定永不使用排队。 这是对出口进行编码的最简单方法,可避免调整的复杂性。 如果您定义了足够多的争用获胜者会话来处理连接的峰值事务负载,那么应该有效。 如果禁止所有排队,那么必须在 SESSIONS 定义上指定 AUTOCONNECT (YES) ,因为排队机制不再为您绑定会话。
通过此方法,如果将所需会话的估算基于平均条件,并且随后的事务负载变化很大,那么会产生危险; 当 CICS 无法使用排队来应对变体时,当资源拥有区域中没有重大问题时,用户可能会发生事务异常终止。
- 检查当前在队列中的请求数。 例如,当该数字超过最大会话数的 120% 时,程序可以停止排队。 您可以使用此方法来应对资源拥有区域中的间歇性停工。
您可以将阈值表用于系统中的连接,并根据先前的排队问题经验确定值。 或者,您可以在单独的程序中使用 EXEC CICS 接口来查询连接的状态,并将工作区中的信息传递到 XISCONA 出口程序。
- 检查请求的类型和正在访问的资源 (可通过检查请求参数列表来发现)。 例如,程序可以拒绝文件读取请求,但队列文件更新。
注: 由于出口程序的故障可能会影响系统可用性,因此建议您使程序的逻辑尽可能简单,从而减少发生错误的可能性。 - 规定永不使用排队。 这是对出口进行编码的最简单方法,可避免调整的复杂性。 如果您定义了足够多的争用获胜者会话来处理连接的峰值事务负载,那么应该有效。 如果禁止所有排队,那么必须在 SESSIONS 定义上指定 AUTOCONNECT (YES) ,因为排队机制不再为您绑定会话。
有一些问题是 XISCONA 无法解决的。 例如,如果同时为 MXT 指定了大量会话和较大的值,那么 CICS 可能会开发存储空间不足 (SOS) 条件 前 由于没有更多可用的会话而调用 XISCONA。
XISCONA 的样本全局用户出口程序
DFHXIS 是样本出口程序,它显示一种根据传递给程序的信息限制 ALLOCATE 请求队列的方法。 有关更多信息,请参阅 Function-shipping/DPL queue control sample exit program: DFHXIS。