减少存储压力
当其中一个动态存储区中的可用空间不足时,会发生存储压力。
存储压力可能是以下情况的症状:
- 其他资源约束导致 CICS® 任务占用存储器的时间超过正常时间
- 突如其来的大量任务,使可用免费存储不堪重负
- 设计不当的应用程序需要不合理的大量存储
CICS 按如下所示处理存储压力:
- 随着可用存储可用性的降低,可能会逐步删除非常驻,未在使用的程序,因为 CICS 会根据最近最少使用的情况确定适当的程序。 随着免费存储的数量越来越少,新任务的分派也在逐步放缓。 这种自我调整的活动往往会分散管理存储的成本。 总体而言可能会有更多程序装入,但在关键时刻不会产生完全程序压缩的沉重开销。
- 程序的加载或重新加载由 CICS 处理,并包含 MVS 子任务。 这样,当 MVS 映像的处理器可用时,即使程序加载过程中需要进行页面加载,其他用户任务仍可继续执行。
- 通过适当使用最大任务规范 (MXT) 和事务类限制来实现存储使用情况的用户运行时控制。 这对于避免不受限制的存储需求可能导致的存储空间不足情况是必需的。
存储空间不足情况
仅当没有足够的可用存储器来满足无条件 GETMAIN 请求时, CICS 才会保留最小数量的可用存储器页面以供使用,即使在删除所有未使用的非驻留程序之后也是如此。
每当存储请求导致其中一个动态存储区中的连续可用页数低于其各自的缓冲大小,或者即使使用存储缓冲也无法满足时,就会存在缓冲应力条件。 存储管理器统计信息中提供了详细信息 (暂挂请求次数
, 释放缓冲次数
)。 CICS 尝试通过执行多项操作来缓解存储压力情况。 如果这些操作无法缓解此情况,或者如果压力状况是由针对 SOS 暂挂的任务引起的,那么会发出存储不足状况的信号。 这伴随着消息 DFHSM0131, DFHSM0133 或 DFHSMSM0606。
- 除去不需要的数据集名称块
- 扩展 CICS 动态存储区 (ECDSA) 也用于数据集名称 (DSN) 块。 将为 CICS 文件控制打开的每个数据集创建一个 DSN 块,并在热重新启动或紧急重新启动时恢复这些数据集。 如果应用程序创建大量临时数据集 (所有这些数据集都具有唯一名称) ,那么 DSN 块的数量可能会增加到可以导致存储空间不足的情况的程度。
如果应用程序使用临时数据集 (对于创建的每个数据集具有不同的名称) ,那么这些程序在使用后除去临时数据集很重要。 有关如何使用此命令从 CICS 区域中除去不需要的临时数据集的信息,请参阅 SET DSNAME 。
- Language Environment® AMODE(24)程序的运行时选项
- CICS 的两个默认 Language Environment 运行时选项是 ALL31(ON )和STACK(ANY)。 这意味着所有需要 Language Environment 的程序都必须能够访问31位存储空间,即在启用 Language Environment 时必须支持AMODE(31)。 要使AMODE(24)程序在 Language Environment 环境中运行,可指定 ALL31(OFF 和STACK(BELOW)。 但是,如果全局更改这些选项,以便所有程序都可以使用这些选项,那么会将大量存储器放置在 16 MB 界线下,这可能会导致存储空间不足的情况。
有关更多信息,请参阅 动态存储区中的存储空间不足情况。
清除任务
如果 CICS 任务的暂挂时间超过其 DTIMOUT 值,那么如果在 RDO 事务定义中指定了 SPURGE=YES ,那么可能会将其清除。 即,任务异常结束,其资源被释放,从而允许其他任务使用这些资源。 通过这种方式, CICS 尝试解决实际上是存储器上的死锁。
如果无法执行清除任务或无法解决问题,那么 CICS 将停止处理。 然后,必须取消并重新启动 CICS 区域。