调查临时存储器等待
如果用户任务正在等待以 TS 开头的资源类型 (显示该资源类型用于临时存储器) ,那么以下信息描述了等待的可能原因。
关于此任务
过程
- 资源类型 TSAUX 指示任务正在等待,因为它已发出对临时存储器的无条件请求,并且无法满足该请求,因为没有足够的辅助存储器可用。 请执行下列操作:
- 获取系统转储并使用格式化关键字 TS 对其进行格式化,以显示临时存储器控制块以及 SM 和 KE 作为这些组件的信息可能很有用。
- 使用 临时存储器是否接近耗尽? 中提供的帮助来分析转储 未分配存储器的分段是否导致 WRITEQ TS 请求失败?。
以下是发出无条件 WRITEQ TS 请求的任务可能在资源类型 TSAUX 上暂挂的两个最可能的原因:- 该任务已发出请求,需要过大的临时存储器。
- 该任务已发出请求,需要合理的临时存储量,但可用量太少。
该任务发出了 EXEC CICS WRITEQ TS 命令,但未指定 NOSUSPEND ,也没有任何代码来处理 NOSPACE 条件。 如果在 CEDA DEFINE TRANSACTION 命令上为任务定义了 SPURGE (YES) ,并且指定了除 0 以外的死锁超时时间间隔,那么在该时间到期时将清除该任务。 否则,将不会清除,并且可能无限期暂停。
如果无法满足条件临时存储器 WRITEQ TS 请求 (指定了 NOSUSPEND) ,那么不会暂挂该任务。 相反,如果所需的辅助存储器不可用,那么将向其返回异常响应。 可能由于另一个原因仍存在暂挂-例如,如果 CICS® 存储空间不足,那么临时存储器程序本身可能会在发出 GETMAIN 后处于暂挂状态。
- 资源类型 TSBUFFER 指示正在等待的任务已发出辅助临时存储器请求,但所有缓冲区都在使用中。 如果发现任务通常在此资源上等待,请考虑增加辅助临时存储器缓冲区数 (系统初始化参数 TS)。
- 资源类型 TSEXTEND 指示正在等待的任务已发出扩展辅助临时存储器数据集的请求,但其他一些任务已发出相同的请求。 等待不会超出扩展操作完成所花费的时间。 如果您的任务在此资源上等待了很长时间,请检查是否存在硬件故障或 VSAM 问题。
- 资源类型 TSIO 指示在辅助临时存储器读或写期间发生物理 I/O 时,将执行该任务以等待。 如果在此资源上存在扩展等待,请检查是否存在硬件故障或 VSAM 问题。
- 资源类型 TSMAINLM 指示正在等待的任务发出了主临时存储器请求,但无法满足该请求,因为没有足够的可用存储器。 如果发现任务经常在此资源上等待,请检查是否存在可删除的大型临时存储器队列,或者考虑增加可供主临时存储器队列使用的存储器限制 (系统初始化参数 TSMAINLIMIT)。
- 资源类型 TSPOOL 指示已达到耦合设施中临时存储池的最大并发请求数 (10)。 当其中一个请求完成时,该任务将继续执行。
- 资源类型 TSQUEUE 指示正在等待的任务已针对另一个任务已在使用的临时存储器队列发出请求。
后一个任务在队列上具有锁定。 任务在临时存储器队列上具有锁定的时间长度取决于该队列是否可恢复。 如果队列可恢复,那么该任务将具有锁定,直到逻辑工作单元完成为止。 如果不可恢复,那么该任务仅在临时存储器请求的持续时间内具有锁定。
如果系统中的任务经常在临时存储器队列上等待,请考虑以下事项:
- 在同一临时存储器队列上执行操作的任务是否打算执行此操作,或者队列的标识是否无意唯一?
- 是否可以创建更多临时存储器队列以减少任务之间的争用?
- 如果所讨论的队列是可恢复的,是否可以使任务更快地放弃对它的控制? 请考虑减小 UOW 的大小,或者使会话式任务成为伪会话式任务。
- 资源类型 TSSHARED 指示正在异步处理共享临时存储器请求。 当请求完成时,将恢复该任务。 用于确定是同步还是异步处理请求的逻辑在 CICS 控制之外。
- 资源类型 TSSTRING 指示任务正在等待辅助临时存储器 VSAM 字符串。 如果发现任务频繁在此资源上等待,请考虑增加临时存储器字符串数 (系统初始化参数 TS)。
- 资源类型 TSWBUFFR 指示正在等待的任务已发出辅助临时存储器请求,但所有写缓冲区都在使用中。 您无法控制临时存储器如何从缓冲池中分配读缓冲区和写缓冲区,但是如果发现任务通常在此资源上等待,那么增加辅助临时存储器缓冲区数 (系统初始化参数 TS) 应有助于解决问题。