1.概述 本次的工作主要是配合XX银行及第三方相关的技术人员解决Tuxedo系统的性能不稳定、出现系统阻塞、访问缓慢、请求失败的异常情况。
2.问题描述 从某个时间开始,总前系统扩大调整完相关参数,进入投产运营后,Tuxedo系统开始出现了相应缓慢,请求排队积压的情况。从前端操作层面反映系统访问相应比较慢,业务失败率高;从后台看系统中请求排队较长。
最初怀疑是Tuxedo锁配置网关服务数量不够,在增加相关服务数量后,当日情况缓解。但到了第二天上午,系统进一步恶化,只好重启,并关闭个别业务通道以限制进入的并发请求量。
当系统运行缓慢是,相关情况如下:
1)单笔业务的响应时间比平时明显加长;
2)负责分发和总控的服务进程,有积压非常严重;
3)能看到Tuxedo的总控网关服务具有一定的联动性;
系统当前配置
(1)操作系统:landingbj-64位
(2)Tuxedo:XXXX-64位
(3)数据库:Oracle xxxx(没有用到XA和TMS)
3.问题分析 当问题发生时,能发现到系统有个明显的阻滞和10秒钟的停顿,系列的连锁现象为:
(1)Tuxedo的BBL在特定情况下,其自身队列阻塞;
(2)通过.TMIB访问BBL中系统状态的总控网关由于等待BBL响应,也开始陷入阻塞;
(3)由于使用MSSQ,业务服务由于等待总控的处理结果,也开始陷入阻塞。
客户相关截获的消息队列跟踪信息参考如下(采集于发生问题当日上午):
root@xxxx:/>./ipci.sh
q 113246950 0xffffffff --rw-rw-rw- cebzh dba cebzh dba 7156 8 4194304 3260822 889472 9:30:08 9:30:08 1:42:49
IPC status from /dev/mem as of Thu Nov 3 09:30:16 BEIST 2011
q 13633093 0xffffffff --rw-rw-rw- cebzh dba cebzh dba 5988 12 4194304 3047642 2978188 9:30:15 9:30:10 1:43:23
q 57672398 0xffffffff --rw-rw-rw- cebzh dba cebzh dba 10476 12 4194304 2158790 1458456 9:30:08 9:30:04 1:42:49
q 98566798 0x00033a20 --rw-rw-rw- cebzh dba cebzh dba 9120 16 4194304 168016 2773276 9:30:13 9:30:08 1:42:19
q 7341683 0xffffffff --rw-rw-rw- cebzh dba cebzh dba 300580 349 4194304 2912438 2158790 9:30:16 9:30:08 1:43:32
q 2099005 0x13000093 -Rrw-rw-rw- cebzh dba cebzh dba 114264 407 4194304 430236 1978940 9:30:11 9:30:04 1:43:55
q 1033896453 0xffffffff --rw-rw-rw- cebzh dba cebzh dba 1036640 1303 4194304 2998732 2015650 9:30:15 9:30:08 1:43:12
q 6293043 0xffffffff --rw-rw-rw- cebzh dba cebzh dba 1497728 1518 4194304 3104846 2453746 9:30:16 9:30:08 1:43:17
q 2098727 0xffffffff --rw-rw-rw- cebzh dba cebzh dba 942320 1634 4194304 1679428 2113858 9:30:16 9:30:08 1:43:14
q 113246950 0xffffffff --rw-rw-rw- cebzh dba cebzh dba 7156 8 4194304 3260822 889472 9:30:08 9:30:08 1:42:49
IPC status from /dev/mem as of Thu Nov 3 09:30:17 BEIST 2011
q 57672398 0xffffffff --rw-rw-rw- cebzh dba cebzh dba 10476 12 4194304 2158790 1458456 9:30:08 9:30:04 1:42:49
q 13633093 0xffffffff --rw-rw-rw- cebzh dba cebzh dba 6992 14 4194304 3047642 2978188 9:30:16 9:30:10 1:43:23
q 98566798 0x00033a20 --rw-rw-rw- cebzh dba cebzh dba 9120 16 4194304 168016 2773276 9:30:13 9:30:08 1:42:19
q 7341683 0xffffffff --rw-rw-rw- cebzh dba cebzh dba 338788 394 4194304 2167150 2158790 9:30:17 9:30:08 1:43:32
q 2099005 0x13000093 -Rrw-rw-rw- cebzh dba cebzh dba 114581 408 4194304 1544512 1978940 9:30:17 9:30:04 1:43:55
q 1033896453 0xffffffff --rw-rw-rw- cebzh dba cebzh dba 1036640 1303 4194304 2998732 2015650 9:30:15 9:30:08 1:43:12
q 6293043 0xffffffff --rw-rw-rw- cebzh dba cebzh dba 1508560 1529 4194304 3104846 2453746 9:30:17 9:30:08 1:43:17
q 2098727 0xffffffff --rw-rw-rw- cebzh dba cebzh dba 990840 1725 4194304 844180 2113858 9:30:17 9:30:08 1:43:14
q 6291457 0xffffffff --rw-rw-rw- cebzh dba cebzh dba 5320 8 4194304 3047642 168016 9:30:18 9:30:13 1:43:12
q 113246950 0xffffffff --rw-rw-rw- cebzh dba cebzh dba 7156 8 4194304 3260822 889472 9:30:08 9:30:08 1:42:49
IPC status from /dev/mem as of Thu Nov 3 09:30:18 BEIST 2011
q 98566798 0x00033a20 --rw-rw-rw- cebzh dba cebzh dba 9120 16 4194304 168016 2773276 9:30:13 9:30:08 1:42:19
q 13633093 0xffffffff --rw-rw-rw- cebzh dba cebzh dba 8508 17 4194304 3047642 2978188 9:30:18 9:30:10 1:43:23
q 2099005 0x13000093 -Rrw-rw-rw- cebzh dba cebzh dba 115208 410 4194304 2204100 1978940 9:30:18 9:30:04 1:43:55
q 7341683 0xffffffff --rw-rw-rw- cebzh dba cebzh dba 386436 450 4194304 3527066 2158790 9:30:18 9:30:08 1:43:32
q 1033896453 0xffffffff --rw-rw-rw- cebzh dba cebzh dba 1037568 1304 4194304 2597012 2015650 9:30:18 9:30:08 1:43:12
q 6293043 0xffffffff --rw-rw-rw- cebzh dba cebzh dba 1523580 1544 4194304 3104846 2453746 9:30:18 9:30:08 1:43:17
q 2098727 0xffffffff --rw-rw-rw- cebzh dba cebzh dba 1035740 1806 4194304 1679428 2113858 9:30:18 9:30:08 1:43:14
^Croot@xxxx:/>ps -ef|grep 2113858
cebzh 2113858 1 20 09:26:35 pts/13 0:16 PBMIDGW -C dom=pbnode2 -g 9 -i 66 -u ebiphead3 -U /home/cebzh/log/ULOG -m 0 -A -- 870
root 1348346 921960 0 09:30:26 pts/19 0:00 grep 2113858
root@xxxx:/>ps -ef|grep 2453746
root 712800 921960 0 09:30:31 pts/19 0:00 grep 2453746
h 2453746 1 8 Oct 24 - 777:35 PBMIDGW -C dom=pbnode2 -g 9 -i 100 -u ebiphead3 -U /home/cebzh/log/ULOG -m 0 -A -- 850 1
root@xxxx:/>ps -ef|grep 2015650
cebzh 2015650 1 2 Oct 24 - 566:48 PBMIDGW -C dom=pbnode2 -g 9 -i 20 -u ebiphead3 -U /home/cebzh/log/ULOG -m 0 -A -- 831 2
root 545444 921960 0 09:30:36 pts/19 0:00 grep 2015650
root@xxxx:/>ps -ef|grep 2158790
cebzh 2158790 1 14 Oct 24 - 1202:34 PBMIDGW -C dom=pbnode2 -g 9 -i 360 -u ebiphead3 -U /home/cebzh/log/ULOG -m 0 -A -- 112
root 2613624 921960 0 09:30:42 pts/19 0:00 grep 2158790
root@xxxx:/>ps -ef|grep 1978940
root 2040016 921960 0 09:30:51 pts/19 0:00 grep 1978940
4.完善建议
4.1减少.TMIB库的调用量
尽量解耦各总控模块间的关联度和对BBL资源的争用。
4.2服务端去除tpterm()
在服务端打开Tuxedo的Trace跟踪,会发现有很多错误,主要表现为
tpterm = -1 [tperrno=TPEPROTO]
从Tuxedo的编程规范来讲,tpinit()和tpterm()属于客户端使用的建链和断链代码,如果是从服务端的Tuxedo服务中直接调用其他服务(包括系统.TMIB服务),都不需要使用该代码。
4.3拆解单一MSSQ到多个MSSQ
Tuxedo可以使用单Server单队列的方式(SSSQ),即每个服务进程有自己的队列;也可以使用多Server多队列的方式(MSSQ),让多个服务间共享队列;考虑到健壮性和效率,建议采用多个MSSQ来配置总控网关服务,即一个这中的办法,同一种服务,几个捆绑在一组中,另外几个捆绑在另外的组中。
5.其余事项
5.1相关SR
在Oracle MetaLink上已建有相关SR 3-4877633441,主要用于排查产品相关的可能隐患,其由Oracle GCS部门统一协调研发资源继续跟踪。
5.2强制超时
对于万一发生阻塞时,需要紧急杀出来的服务,可以添加SVCTIMEOUT参数,当超时时间到达时,配合
MAXGEN=重启次数 GRACE=重启间隔 RESTART=Y
可以自动杀掉重启。