CPF4167 - job无故msgw分析及解决办法[as/400]
时间:2016-11-09 ┊ 阅读:5,888 次 ┊ 标签: 经验 , 问题 , 命令
有个监控的job,实时监控作业运行情况出现异常及时报警发送短信到support技术人员手机上。这是通常的as/400上监控job的功能。
最近这个job经常报如下错误:
Message . . . . : The subsystem xxxxxx is in error. Either the subsystem
should be active and is not; the subsystem should not be active and is; the
subsystem has a message wait condition. When the problem has been rectified:
(1) enter G to continue monitoring; (2) type in XXX, take option 1, and
10=Close the corresponding Alert..
Cause . . . . . : This message is used by application programs as a general
escape message.
截图:
看到这个错误,还以为这个sub system出问题了,一查正常的在跑的。就翻log往上看,这时发现:
Job cannot create any more spooled files.
直译:作业不能创建更多假脱机文件
怎么到创建spool file上面来了呢?
这要从监控job的原理说一下,监控job一般就是submit一个job到一个sub system里一直运行,每隔一定的时间(比如5分钟)就扫描一次所以需要监控的job,查看当时的job status。一个通常的做法就是把所有指定的job打印的spool file里,然后扫描这个file,这时就需要每隔5分钟创建一个spool file。监控job一直在运行,随着时间的推移,所创建的spool file越来越多,400系统为了防止spool file无限制的创建把硬盘爆掉,有一个系统设置QMAXSPLF,这个值可以设置一个job可以创建的最大spool files个数。
赶紧查了一下这个值是多少
dspsysval qmaxsplf
查看系统值就可以看到了
Display System Value
System value . . . . . : QMAXSPLF
Description . . . . . : Maximum spooled files
Maximum spooled files : 9999 9999-999999
截图:
可以看到当时设置的为9999,最小值,最大值可以设置为999999.
我们看一下这个qmaxsplf的帮助如下:
Help QMAXSPLF - Help
Maximum spooled files per job. The maximum number of spooled files
that can be created per job. Spooled files will not be deleted when
this value is changed to a lower number. Therefore, a job can have
more than this maximum number of spooled files if the spooled files
existed before the system value was set to a lower number. See the
Printer Device Programming book for information on how this system
value affects spooling for a job.
A change to this system value takes effect immediately. The shipped
value is 9999.
问题看到了,现在解决办法就有了:
1,删除多余的spool files,一个命令的事,ok,但不能相对彻底长久解决问题;
2,把这个参数qmaxsplf设置得更大,也ok,不过像这种监控job总有用尽的一天,也不能相对彻底长久解决问题;
3,让job自己边创建边删除之前的已经过时或旧的不用的spool files,这个相对能好一点。我们的监控job用的就是这个方法,不过现在有个问题,随着系统的庞大,监控的job越来越多,生成的spool file也越来越多,删除时有的不彻底,虽然显示已经删除了,但还占有着这个文件数还在增加。这个方法只是让job坚持的长一些;
4,另外开一个job出定时的清理作业无用的spool files,和3方法相似,也ok,但也不行;
5,定时或自己查看当时已经创建的spool file数量后重启监控job,把原来的end掉同时彻底清理其所有spool files,这个最彻底。
我们现在就采用了方法5,重启job,简单