1.全业务平台Tuxedo系统队列堵塞
1.1问题概述
在此现场支持期间,客户反映:主机XXX和YYY上的Tuxedo业务系统中的队列偶尔有消息堵塞的状况发生,以用户tuxapp1或tuxapp2分别登录到这两台机器上以后,执行pq脚本进行实时监控查看,得到的系统运行状况信息如下:
主机:XXX主机的监控信息(每隔一段时间的截图)
Tuxedo is a registered trademark.
qamcbs1l1serve qamcbs4l1 7 50 1 0.3 ubss
qamcbs1l1serve qamcbs1l1 7 50 1 0.4 ubss
qamcbs1l1serve qamcbs2l1 7 50 1 0.5 ubss
tcccrm1l1serve tcccrm3l1 8 50 1 0.5 ubss
qcscrm1l1serve qcscrm2l1 5 50 1 0.6 ubss
tcccrm1l1serve tcccrm2l1 8 50 1 0.6 ubss
qcscrm1l1serve qcscrm3l1 5 50 1 0.8 ubss
qcscrm1l2serve qcscrm3l2 7 50 1 2.6 ubss
qcscrm1l2serve qcscrm2l2 7 100 2 2.3 ubss
qcscrm1l1serve qcscrm1l1 5 200 4 0.9 ubss
qcscrm1l2serve qcscrm4l2 7 250 5 2.0 ubss
qcscrm1l2serve qcscrm1l2 7 1100 22 4.0 ubss
--------- ------------------- --------- -------- -------- -------
> Prog Name Queue Name # Serve Wk Queued # Queued Ave. Len Machine
Tuxedo is a registered trademark.
tcccrm1l1serve tcccrm1l1 8 0 0 1.0 ubss
qcscrm1l2serve qcscrm2l2 7 0 0 2.3 ubss
tcccrm1l1serve tcccrm3l1 8 50 1 0.5 ubss
tcccrm1l1serve tcccrm2l1 8 50 1 0.6 ubss
qcscrm1l2serve qcscrm3l2 7 50 1 2.6 ubss
qamcbs1l1serve qamcbs2l1 7 100 2 0.5 ubss
qcscrm1l3serve qcscrm2l3 1 100 2 0.5 ubss
tcccrm1l1serve tcccrm4l1 8 100 2 0.5 ubss
qcscrm1l1serve qcscrm1l1 5 100 2 0.9 ubss
qcscrm1l1serve qcscrm4l1 5 200 4 0.5 ubss
qcscrm1l2serve qcscrm1l2 7 350 7 4.0 ubss
qcscrm1l2serve qcscrm4l2 7 400 8 2.0 ubss
--------- ------------------- --------- -------- -------- -------
> Prog Name Queue Name # Serve Wk Queued # Queued Ave. Len Machine
Tuxedo is a registered trademark.
qamcbs1l1serve qamcbs3l1 7 50 1 0.4 ubss
qcscrm1l3serve qcscrm4l3 1 50 1 0.4 ubss
tcccrm1l1serve tcccrm4l1 8 50 1 0.5 ubss
tcccrm1l1serve tcccrm2l1 8 50 1 0.6 ubss
qcscrm1l1serve qcscrm1l1 5 50 1 0.9 ubss
qcscrm1l1serve qcscrm4l1 5 100 2 0.5 ubss
qcscrm1l3serve qcscrm1l3 3 100 2 0.6 ubss
tcccrm1l1serve tcccrm1l1 8 100 2 1.0 ubss
qcscrm1l2serve qcscrm2l2 7 300 6 2.3 ubss
qcscrm1l2serve qcscrm1l2 7 300 6 4.0 ubss
qcscrm1l2serve qcscrm4l2 7 350 7 2.0 ubss
qcscrm1l2serve qcscrm3l2 7 800 16 2.6 ubss
--------- ------------------- --------- -------- -------- -------
> Prog Name Queue Name # Serve Wk Queued # Queued Ave. Len Machine
主机:YYY主机的监控信息(每隔一段时间的截图)
Tuxedo is a registered trademark.
tamcbs1l1serve tamcbs2l1 7 50 1 0.2 ubss
qamcbs1l1serve qamcbs2l1 7 50 1 0.3 ubss
qcscrm1l3serve qcscrm4l3 1 50 1 0.4 ubss
qcscrm1l1serve qcscrm1l1 5 50 1 0.7 ubss
tcccrm1l1serve tcccrm4l1 8 50 1 0.7 ubss
qamcbs1l1serve qamcbs1l1 7 100 2 0.3 ubss
qcscrm1l1serve qcscrm4l1 5 100 2 0.4 ubss
tcccrm1l1serve tcccrm1l1 8 150 3 0.7 ubss
qcscrm1l2serve qcscrm3l2 7 150 3 2.1 ubss
qcscrm1l2serve qcscrm1l2 7 200 3 2.9 ubss
qcscrm1l2serve qcscrm2l2 7 350 7 1.8 ubss
qcscrm1l2serve qcscrm4l2 7 600 12 1.6 ubss
GWTDOMAIN 00120.00030 1 2114100 -23254 7719.1 ubss
--------- ------------------- --------- -------- -------- -------
> Prog Name Queue Name # Serve Wk Queued # Queued Ave. Len Machine
Tuxedo is a registered trademark.
qamcbs1l1serve qamcbs1l1 7 50 1 0.3 ubss
qamcbs1l1serve qamcbs2l1 7 50 1 0.3 ubss
qcscrm1l3serve qcscrm2l3 1 50 1 0.5 ubss
tcccrm1l1serve tcccrm1l1 8 50 1 0.7 ubss
qcscrm1l3serve qcscrm4l3 1 100 2 0.4 ubss
qcscrm1l1serve qcscrm2l1 5 100 2 0.5 ubss
tcccrm1l1serve tcccrm4l1 8 100 2 0.7 ubss
qcscrm1l1serve qcscrm3l1 5 150 3 0.6 ubss
qcscrm1l2serve qcscrm4l2 7 150 3 1.6 ubss
qcscrm1l2serve qcscrm1l2 7 450 8 2.9 ubss
qcscrm1l2serve qcscrm2l2 7 700 14 1.8 ubss
qcscrm1l2serve qcscrm3l2 7 800 16 2.1 ubss
GWTDOMAIN 00120.00030 1 2115550 -23225 7694.3 ubss
--------- ------------------- --------- -------- -------- -------
> Prog Name Queue Name # Serve Wk Queued # Queued Ave. Len Machine
Tuxedo is a registered trademark.
qcscrm1l1serve qcscrm1l1 5 50 1 0.7 ubss
qamcbs1l1serve qamcbs1l1 7 100 2 0.3 ubss
qamcbs1l1serve qamcbs2l1 7 100 2 0.3 ubss
qcscrm1l3serve qcscrm2l3 1 100 2 0.5 ubss
qcscrm1l1serve qcscrm3l1 5 100 2 0.6 ubss
tcccrm1l1serve tcccrm1l1 8 100 2 0.7 ubss
tcccrm1l1serve tcccrm4l1 8 100 2 0.7 ubss
tcccrm1l1serve tcccrm2l1 8 100 2 0.8 ubss
qcscrm1l2serve qcscrm4l2 7 100 2 1.6 ubss
qcscrm1l2serve qcscrm3l2 7 150 3 2.1 ubss
qcscrm1l2serve qcscrm2l2 7 300 6 1.8 ubss
qcscrm1l2serve qcscrm1l2 7 700 13 2.9 ubss
GWTDOMAIN 00120.00030 1 2117500 -23186 7660.4 ubss
--------- ------------------- --------- -------- -------- -------
> Prog Name Queue Name # Serve Wk Queued # Queued Ave. Len Machine
说明:图中用黄色标注的为待处理消息数较多(负载较大)的队列信息,而未标注的为待处理消息数较少(负载较小)的队列信息。
1.2问题分析
由以上pq脚本命令监控得到的信息可以看出:系统中有四条消息队列的待处理消息数较大,其上的服务进程负载较重,发生这种现象的原因是队列中的请求消息没有及时的被服务进程出队处理。下面是对这些监控信息进行详细的分析说明:
由Queued列(消息排队数)的显示数据可以看出:qcscrm1l2、qcscrm2l2、qcscrm3l2和qcscrm4l2这四条队列中的待处理消息数较多,而其他队列中的消息数较少。这四条队列中的待处理消息数也不是一直不变,而是在2-25之间变动,同时通过tmadmin中psr –q查看显示该服务进程的RqDone值在增加,这表明消息能够被服务进程出队处理,只是没有那么及时而已(也就是说该服务进程所执行的业务处理程序代码能够在客户端超时之前返回应答结果),但是如果该队列中的请求消息等待的时间较长而没有被出队的话,这将可能导致客户端有超时现象发生。解决这种现象的方法是增加高负载时的服务进程的个数,即增加该进程的MIN和MAX配置值,MIN值决定了常驻进程数,而MAX则决定了动态变化数,增加这两个值都能够提高并发处理请求的能力,但对整个系统的影响却各有利弊。
从Serve Wk列(服务进程数)的显示数据可以看出:虽然以上四条队列中的消息数始终在较大的范围变动,但服务进程数却没有像预期的那样及时的增加到MAX设置的10个,而是多数时间仍保持MIN设置的7个,只是偶尔才增加一个,发生这种现象的原因是Tuxedo在判断服务进程排队数量时,由上面的截图中的Queued列来判断,当前服务中正在处理的交易也计算到Queued列中,也就是说,当前队列中未处理的请求并未达到配置中的每个服务有2个排队交易的情况,Tuxedo认为服务进程没有出现高负载状况�������出现,因此没有及时产��新的服务进程来处理,这是由该服务进程的CLOPT命令行参数中的-p LowNum,LowTime:HighNum,HighTime选项的配置值所决定的,该选项的配置原则应该是:高负载时新进程早点来(即HighTime小一点),而低负载时新进程晚点走(即LowTime大一点)。
Tuxedo在判断服务有排队自动增加服务不及时可能还有另外一个原因,当Tuxedo判断出需要增加服务时,可能会遇到服务处于繁忙的时候,Tuxedo需要等到服务本次交易处理完成之后才能新增加服务。因此在遇到交易时间比较长的处理时,新增加服务的时间会比较长。
1.3解决方案
根据以上对队列阻塞现象的分析,其推荐的解决方案就是:提高qcscrm1l2、qcscrm2l2、qcscrm3l2和qcscrm4l2这四条队列上的服务进程的处理能力,现提出以下建议:
修改这两台主机中Tuxedo系统的UBB配置文件中的这四条队列的配置内容,这两台主机中的这四条队列的配置信息是一样的,因此分别编辑两台主机中Tuxedo系统中的UBB配置文件,查找到"qcscrm1l2"、"qcscrm2l2"、"qcscrm3l2"和"qcscrm4l2"四条队列的配置信息,对每个队列配置均做如下修改:
修改前:CLOPT="-A -p 1,30:2,30 -- -T" MIN=7 MAX=10
修改后:CLOPT="-A -p 1,180:2,8 -- -T" MIN=8 MAX=20
其修改的含义为:这四条队列上的服务进程在高负载持续8秒后就立即产生新进程处理消息,而低负载持续180秒后产生的新进程才消失,服务进程的初始启动数增加到8个,动态变化的最大数增加到20个。
由以上信息可以看出这四条队列上的服务进程"qcscrm1l2server"中的服务函数是频繁执行的业务程序,因此如果该业务程序的开发者能够对这些业务程序代码进行更优化的编程的话,也将对减少整个系统的压力有较大的帮助,这样会使得客户端能够有更快、更及时的响应速度。
根据现场反应,服务只有在月末和月初的业务高峰期才会出现堵塞,建议在业务高峰期出现堵塞时,通过手工:tmboot -i servid 的方式来增加服务个数,增加系统处理能力。也可通过shell脚本定时查询当前服务队列数量,若队列排除数量比较大,在脚本中tmboot -i servid 的方式来增加服务个数,增加系统处理能力。
该贴被funny编辑于2014-2-20 10:29:25
该贴被funny编辑于2014-2-20 10:30:45该贴被funny编辑于2014-2-20 10:44:31