熟悉AIX、CICS的朋友请帮忙:
一个需要循环执行上千笔交易的大交易,总在第481次循环LINK交易时提示,APP SERVER异常终止,请好心的朋友帮忙!!
谢谢大家!
neo2718 回复于:2002-06-03 19:14:26 |
执行LINK语句以后的RESPCODE是什么? |
zhouf 回复于:2002-06-04 11:25:47 |
执行LINK子交易的语句就飞了,无法到达子交易,也取不到RESPCODE 第481次执行 EXEC CICS LINK PROGRAM(TRT_DATA.trt_pgmnam) RESP(rc); 时,CICS的应用服务异常终止,由于应用服务异常终止,整个进程掉了,所以也取不到 返回码 console.000000控制台文件的提示信息为: ERZ010089E/0367 06/01/02 12:27:04 SIBS : Application Server 112 ended unexpectedly ERZ007051W/1112 06/01/02 12:27:04 SIBS : Asynchronously-started transaction 'S031' has encountered problems ERZ007049W/1110 06/01/02 12:27:04 SIBS : Asynchronously-started transaction 'S031' terminated abnormally. Temporary Storage Queue 'DF!U0008' should be deleted. ERZ014016E/0036 06/01/02 12:27:04 SIBS : Transaction 'S031', Abend 'A147', at '????'. ERZ010144I/0375 06/01/02 12:27:09 SIBS : Application server 114 started ERZ080088I/8049 06/01/02 12:27:09 SIBS : XA OPEN submitted for Server 114 connected to 'Single Phase Informix' using XA_OPEN string 'sibsdb' ERZ080006I/8048 06/01/02 12:27:10 SIBS : XA_OPEN succeeded: Application Server 114 connected to 'Single Phase Informix' usin g XA_OPEN string 'sibsdb' ERZ080089I/8050 06/01/02 12:27:10 SIBS : XA OPEN completed for Server 114 connected to 'Single Phase Informix' using XA_OPEN string 'sibsdb' ERZ080090I/8051 06/01/02 12:27:10 SIBS : XA RECOVER submitted for Server 114 connected to 'Single Phase Informix' ERZ080091I/8052 06/01/02 12:27:10 SIBS : XA RECOVER completed for Server 114 connected to 'Single Phase Informix' 谢谢帮忙! |
zhouf 回复于:2002-06-04 11:29:31 |
目前CICS的配置是按IBM M80配的,但在RS6000上运行 我曾试着运作两个空交易,发现也是在第481次附近出现相同的问题,所以我想是资源配置的问题,有哪位高手请出手相助,急啊!!! 谢谢!! |
neo2718 回复于:2002-06-04 11:34:38 |
LINK的程序名注意大小写 |
liaoyh 回复于:2002-06-05 10:11:12 |
我四年以前搞过VSE下的CICS,不太清楚了。你这个问题肯定是资源问题,记得好象有个调用是叫FREEMEM 还是FREE,释放资源的,你的是不是没有释放多余的资源啊?还有,如果不行的话,用EXEC CICS START(TRANSACTION-ID)试一下,不是只有LINK一种方法的。不知道说得对不对 |
离了水的蛤蟆 回复于:2002-06-05 10:46:14 |
我也觉得这个问题是资源问题,但是我怀疑是CICS/6000软件的问题,我以前用SX25也是,总在1995次左右出问题,后来只好定时自动断线重连. 我觉得CICS是用来做OLTP的,做这种batch的业务是否可以考虑其他方式?比如,把全部的请求数据发送过去,然后LINK让那边一次性地处理? 所以我觉得你可以这样做: 1. 定期进行完全的初始化 2. 是不是一直没有COMMIT? 3. 问IBM(800现在好像不象以前那样有问必答了,上IBM网站问一问) |
zhouf 回复于:2002-06-05 14:34:26 |
[quote][b]下面引用由[u]neo2718[/u]在 [i]2002/06/04 11:34am[/i] 发表的内容:[/b] LINK的程序名注意大小写 [/quote] 这个我知道,LINK是正确的,只是和循环运行次数有关!谢谢!!! |
zhouf 回复于:2002-06-05 14:37:07 |
[quote][b]下面引用由[u]liaoyh[/u]在 [i]2002/06/05 10:11am[/i] 发表的内容:[/b] 我四年以前搞过VSE下的CICS,不太清楚了。你这个问题肯定是资源问题,记得好象有个调用是叫FREEMEM 还是FREE,释放资源的,你的是不是没有释放多余的资源啊?还有,如果不行的话,用EXEC CICS START(TRANSACTIO ... [/quote] START我用的也很多,更上一层多任务处理时,我就是用START异步处理,每个任务的多交易处理我才用到循环的LINK,我会考虑如果循环这么多的START是否有问题?至于FREEMEM,我以前没用过,我去查查!谢谢你,你的建议很好! |
zhouf 回复于:2002-06-05 14:47:14 |
[quote][b]下面引用由[u]离了水的蛤蟆[/u]在 [i]2002/06/05 10:46am[/i] 发表的内容:[/b] 我也觉得这个问题是资源问题,但是我怀疑是CICS/6000软件的问题,我以前用SX25也是,总在1995次左右出问题,后来只好定时自动断线重连. 我觉得CICS是用来做OLTP的,做这种batch的业务是否可以考虑其他方式?比如,把全 ... [/quote] 每次运行到481次飞了,我可以再执行后面的,但这样毕竟还是没解决问题。循环LINK改写成一个大的LINK程序,里面循环运行交易函数,这样是可行的,但目前本系统很难按照这样做,而且工作量很多,系统的体系也很差。跟COMMIT应该无关,运作两个空交易,也是这种情况。 非常谢谢!! |
neo2718 回复于:2002-06-06 03:21:45 |
建议将纪录分段,将纪录起止编号作为参数传送,start n次控制交易,在该控制交易中循环link |
zhouf 回复于:2002-06-07 13:21:04 |
[quote][b]下面引用由[u]neo2718[/u]在 [i]2002/06/06 03:21am[/i] 发表的内容:[/b] 建议将纪录分段,将纪录起止编号作为参数传送,start n次控制交易,在该控制交易中循环link [/quote] 我就是这么做的,谢谢!就是循环LINK多次,一般481次时就CORE了 |
g-dc 回复于:2002-07-31 10:55:41 |
1、CICS在LINK时会申请有一块内存用于程序间的参数传递,如果多次LINK会占用大量的内存,由于不同的机器的资源不同,运行这类程序时的效率和结果会有差异。而且,LINK时CICS内部会在TCA(TASK CONTORL AREA)建立指针以确定程序的返回地址。所以建议不要使用这种方式。 2、GETMAIN和FREEMAIN要一一对应。否则也会造成内存紧张以至CICS无法运行。 3、建议你用TD来做。这样不太占资源,不过可能要对TD的资源做点调整。(我以前做过VSE 下的CICS,RS6000上有没有TD就不太清楚了)。 |
yuzheng98 回复于:2002-11-01 17:04:06 |
哪位大侠能发给我一下cics远程调用(LINK)的代码,小弟不胜感激。 邮箱地址:yu_zheng@cvicse.com |
skinhead 回复于:2002-11-07 12:15:02 |
我用循环LINK发交易5000笔都不会出错 注意问题:每发一次LINK一定要做EXEC CICS SYNCPOINT; 同时应用程序一定要注意资源释放,比如内存、文件 |
zhouf 回复于:2002-06-03 15:55:00 |
neo2718 回复于:2002-06-03 19:14:26 |
执行LINK语句以后的RESPCODE是什么? |
zhouf 回复于:2002-06-04 11:25:47 |
执行LINK子交易的语句就飞了,无法到达子交易,也取不到RESPCODE 第481次执行 EXEC CICS LINK PROGRAM(TRT_DATA.trt_pgmnam) RESP(rc); 时,CICS的应用服务异常终止,由于应用服务异常终止,整个进程掉了,所以也取不到 返回码 console.000000控制台文件的提示信息为: ERZ010089E/0367 06/01/02 12:27:04 SIBS : Application Server 112 ended unexpectedly ERZ007051W/1112 06/01/02 12:27:04 SIBS : Asynchronously-started transaction 'S031' has encountered problems ERZ007049W/1110 06/01/02 12:27:04 SIBS : Asynchronously-started transaction 'S031' terminated abnormally. Temporary Storage Queue 'DF!U0008' should be deleted. ERZ014016E/0036 06/01/02 12:27:04 SIBS : Transaction 'S031', Abend 'A147', at '????'. ERZ010144I/0375 06/01/02 12:27:09 SIBS : Application server 114 started ERZ080088I/8049 06/01/02 12:27:09 SIBS : XA OPEN submitted for Server 114 connected to 'Single Phase Informix' using XA_OPEN string 'sibsdb' ERZ080006I/8048 06/01/02 12:27:10 SIBS : XA_OPEN succeeded: Application Server 114 connected to 'Single Phase Informix' usin g XA_OPEN string 'sibsdb' ERZ080089I/8050 06/01/02 12:27:10 SIBS : XA OPEN completed for Server 114 connected to 'Single Phase Informix' using XA_OPEN string 'sibsdb' ERZ080090I/8051 06/01/02 12:27:10 SIBS : XA RECOVER submitted for Server 114 connected to 'Single Phase Informix' ERZ080091I/8052 06/01/02 12:27:10 SIBS : XA RECOVER completed for Server 114 connected to 'Single Phase Informix' 谢谢帮忙! |
zhouf 回复于:2002-06-04 11:29:31 |
目前CICS的配置是按IBM M80配的,但在RS6000上运行 我曾试着运作两个空交易,发现也是在第481次附近出现相同的问题,所以我想是资源配置的问题,有哪位高手请出手相助,急啊!!! 谢谢!! |
neo2718 回复于:2002-06-04 11:34:38 |
LINK的程序名注意大小写 |
liaoyh 回复于:2002-06-05 10:11:12 |
我四年以前搞过VSE下的CICS,不太清楚了。你这个问题肯定是资源问题,记得好象有个调用是叫FREEMEM 还是FREE,释放资源的,你的是不是没有释放多余的资源啊?还有,如果不行的话,用EXEC CICS START(TRANSACTION-ID)试一下,不是只有LINK一种方法的。不知道说得对不对 |
离了水的蛤蟆 回复于:2002-06-05 10:46:14 |
我也觉得这个问题是资源问题,但是我怀疑是CICS/6000软件的问题,我以前用SX25也是,总在1995次左右出问题,后来只好定时自动断线重连. 我觉得CICS是用来做OLTP的,做这种batch的业务是否可以考虑其他方式?比如,把全部的请求数据发送过去,然后LINK让那边一次性地处理? 所以我觉得你可以这样做: 1. 定期进行完全的初始化 2. 是不是一直没有COMMIT? 3. 问IBM(800现在好像不象以前那样有问必答了,上IBM网站问一问) |
zhouf 回复于:2002-06-05 14:34:26 |
[quote][b]下面引用由[u]neo2718[/u]在 [i]2002/06/04 11:34am[/i] 发表的内容:[/b] LINK的程序名注意大小写 [/quote] 这个我知道,LINK是正确的,只是和循环运行次数有关!谢谢!!! |
zhouf 回复于:2002-06-05 14:37:07 |
[quote][b]下面引用由[u]liaoyh[/u]在 [i]2002/06/05 10:11am[/i] 发表的内容:[/b] 我四年以前搞过VSE下的CICS,不太清楚了。你这个问题肯定是资源问题,记得好象有个调用是叫FREEMEM 还是FREE,释放资源的,你的是不是没有释放多余的资源啊?还有,如果不行的话,用EXEC CICS START(TRANSACTIO ... [/quote] START我用的也很多,更上一层多任务处理时,我就是用START异步处理,每个任务的多交易处理我才用到循环的LINK,我会考虑如果循环这么多的START是否有问题?至于FREEMEM,我以前没用过,我去查查!谢谢你,你的建议很好! |
zhouf 回复于:2002-06-05 14:47:14 |
[quote][b]下面引用由[u]离了水的蛤蟆[/u]在 [i]2002/06/05 10:46am[/i] 发表的内容:[/b] 我也觉得这个问题是资源问题,但是我怀疑是CICS/6000软件的问题,我以前用SX25也是,总在1995次左右出问题,后来只好定时自动断线重连. 我觉得CICS是用来做OLTP的,做这种batch的业务是否可以考虑其他方式?比如,把全 ... [/quote] 每次运行到481次飞了,我可以再执行后面的,但这样毕竟还是没解决问题。循环LINK改写成一个大的LINK程序,里面循环运行交易函数,这样是可行的,但目前本系统很难按照这样做,而且工作量很多,系统的体系也很差。跟COMMIT应该无关,运作两个空交易,也是这种情况。 非常谢谢!! |
neo2718 回复于:2002-06-06 03:21:45 |
建议将纪录分段,将纪录起止编号作为参数传送,start n次控制交易,在该控制交易中循环link |
zhouf 回复于:2002-06-07 13:21:04 |
[quote][b]下面引用由[u]neo2718[/u]在 [i]2002/06/06 03:21am[/i] 发表的内容:[/b] 建议将纪录分段,将纪录起止编号作为参数传送,start n次控制交易,在该控制交易中循环link [/quote] 我就是这么做的,谢谢!就是循环LINK多次,一般481次时就CORE了 |
g-dc 回复于:2002-07-31 10:55:41 |
1、CICS在LINK时会申请有一块内存用于程序间的参数传递,如果多次LINK会占用大量的内存,由于不同的机器的资源不同,运行这类程序时的效率和结果会有差异。而且,LINK时CICS内部会在TCA(TASK CONTORL AREA)建立指针以确定程序的返回地址。所以建议不要使用这种方式。 2、GETMAIN和FREEMAIN要一一对应。否则也会造成内存紧张以至CICS无法运行。 3、建议你用TD来做。这样不太占资源,不过可能要对TD的资源做点调整。(我以前做过VSE 下的CICS,RS6000上有没有TD就不太清楚了)。 |
yuzheng98 回复于:2002-11-01 17:04:06 |
哪位大侠能发给我一下cics远程调用(LINK)的代码,小弟不胜感激。 邮箱地址:yu_zheng@cvicse.com |
skinhead 回复于:2002-11-07 12:15:02 |
我用循环LINK发交易5000笔都不会出错 注意问题:每发一次LINK一定要做EXEC CICS SYNCPOINT; 同时应用程序一定要注意资源释放,比如内存、文件 |
kangkang 回复于:2003-07-24 11:18:12 |
偶的6万笔也没问题啊,奇怪 |
延伸阅读
文章来源于领测软件测试网 https://www.ltesting.net/