搜索
您的当前位置:首页Tuxedo性能监控

Tuxedo性能监控

时间:2024-08-02 来源:乌哈旅游


Tuxedo性能监控

文档控制

修订记录

版本 1.0 日期 2007-7-19 作者 郭瑞升 变更说明 1.

1. Tuxedo命令.............................................................................................................................. 5

1.1. 启动和停止一个应用 ................................................................................................... 5

1.1.1. 启动和停止应用的流程 ................................................................................... 5 1.1.2. 设置环境变量 ................................................................................................... 5 1.1.3. 创建TUXCONFIG文件 .................................................................................. 5 1.1.4. 在所有站点(site)启动tlisten ............................................................................ 6 1.1.5. 手动复制应用程序的目录和文件 ................................................................... 6 1.1.6. 创建TLOG设备(Device) ................................................................................ 6 1.1.7. 启动应用程序 ................................................................................................... 6 1.1.8. 停止应用程序 ................................................................................................... 6 1.2. 创建和配置TMS ......................................................................................................... 6 2. 性能监控前准备 ....................................................................................................................... 8

2.1. 监控应用程序的方法 ................................................................................................... 8 2.2. 选择合适的监控工具 ................................................................................................... 8 2.3. 用管理控制台监控应用程序 ....................................................................................... 8 2.4. 用命令行工具监控应用程序 ....................................................................................... 8 2.5. 用EventBroker监控应用程序 .................................................................................... 9 2.6. 用日志文件监控应用程序 ........................................................................................... 9 2.7. 用MIB监控应用程序 ................................................................................................. 9 2.8. 用运行时和用户级跟踪工具 ....................................................................................... 9 2.9. 用DBBL和BBL处理错误 ........................................................................................ 9 2.10. 用ATMI处理系统级和应用级错误 ....................................................................... 9 2.11. 监控多线程多上下文应用程序 ................................................................................... 9 2.12. 如何查看tuxedo的详细版本 .................................................................................. 9 2.13. 了解应用的配置 ..................................................................................................... 10 2.14. 设置report选项 ..................................................................................................... 12 3. 性能监控 ................................................................................................................................. 12

3.1. 查看ULOG日志 ........................................................................................................ 12 3.2. 查看TLOG日志 ........................................................................................................ 13 3.3. 性能监控脚本 ............................................................................................................. 13 3.4. 各监控命令输出的含义 ............................................................................................. 13

3.4.1. psr输出服务器信息 ....................................................................................... 13 3.4.2. psc输出服务信息 .......................................................................................... 14 3.4.3. pq输出队列信息 ............................................................................................ 14 3.4.4. pclt输出客户端信息 ...................................................................................... 15

4. 性能分析 ................................................................................................................................. 15 5. 性能优化及建议 ..................................................................................................................... 16

5.1. 何时使用MSSQ队列 ................................................................................................ 16 5.2. 配置domain网关时注意的步骤及问题 ................................................................... 16 5.3. 如何启用负载均衡 ..................................................................................................... 22 5.4. 如何设置接口或服务的优先级 ................................................................................. 22 5.5. 邦定多个服务(service)到服务器(server) .................................................................. 22

5.6. 提高系统整体性能 ..................................................................................................... 22 5.7. 确定系统的IPC资源................................................................................................. 22 5.8. 优化IPC参数 ............................................................................................................ 23 5.9. 测量系统流量 ............................................................................................................. 25 6. 故障解决(troubleshooting) ..................................................................................................... 25

6.1. 如何产生和查看core dump信息 ......................................................................... 25 6.2. 如何查看tuxedo的详细版本 .................................................................................... 25 6.3. 确定故障类型 ......................................................................................................... 25 6.4. 如何主动向最终客户发消息 ................................................................................. 26 6.5. 维护系统文件 ......................................................................................................... 26 6.6. 恢复时需要考虑的 ................................................................................................. 26 6.7. 修复Partitioned网络 ......................................................................................... 26 6.8. 恢复故障机器 ......................................................................................................... 26 6.9. 如何替换系统组件 ................................................................................................. 26 6.10. 如何替换应用组件 ................................................................................................. 26 6.11. 手动清除资源和重启服务器(server) ................................................................. 26 6.12. 撤销或提交事务 ..................................................................................................... 26 6.13. 当使用事务时,如何从故障中恢复。 ................................................................. 26 6.14. 当应用停止失败时,如何使用IPC工具 ............................................................. 26 6.15. 在应用启动时,有一组TMS启动时间过长或起不来 ....................................... 26 7. 附录......................................................................................................................................... 27

1. Tuxedo命令

1.1. 启动和停止一个应用 1.1.1. 启动和停止应用的流程

设置环境变量 创建TUXCONFIG文件 在所有站点(site)启动tlisten 手动复制应用程序的目录和文件 创建TLOG设备(Device) 启动应用程序 停止应用程序

1.1.2. 设置环境变量

1.1.3. 创建TUXCONFIG文件

将文本配置文件转换成二进制文件

tmloadcf [-n] [-y] [-c] [-b blocks] {UBBCONFIG_file|-} -n:只进行系统检查,报告错误。

-y:强制覆盖已存在的TUXCONFIG文件。 -c:计算配置文件需要的最少IPC资源。

-b:限制TUXCONFIG文件的大小,主要用于TUXCONFIG文件存储在裸设备的情况。 tmloadcf –y ubb.guoruisheng

1.1.4. 在所有站点(site)启动tlisten 1.1.5. 手动复制应用程序的目录和文件 1.1.6. 创建TLOG设备(Device)

1) 在配置文件的MACHINES部分设置TLOGDEVICE, TLOGOFFSET, TLOGNAME和 TLOGSIZE参

2) 在MASTER机器上执行如下命令.

$tmadmin -c -c:为配置模式 3) 创建TLOG设备

>crdl -z config -b blocks

-z:为文件的存放路径,应该和配置文件中的TLOGDEVICE参数一致。 -b:指定块的数量。

4) 在其它需要全局事务的机器上重复步骤1到3。

注:如果TLOG存储在镜像的磁盘上,则不需要作步骤4。

1.1.7. 启动应用程序

$ tmboot [-g grpname] [-o sequence] [-S] [-s servername] [-A] [-y] -g:启动指定的组名中的服务器(server)。 -o:按指定的顺序启动服务器(server)。

-S:启动所有在配置文件SERVERS部分的服务器(server)。 -s:启动指定的服务器(server)。

-A:启动所有在MACHINES部分列出的所有管理服务器(server)。 -y:启动所有的管理和应用服务器(server)

1.1.8. 停止应用程序

1) 运行tmshutdown。

$tmshutdown

2) 当应用没有正常关闭时,使用IPC工具清除系统分配的资源。

$tmipcrm [-y] [-n] [TUXCONFIG_file]

命令会列出所有的Tuxedo使用的IPC资源,然后提示你是否清除。 3) 删除/Q的IPC资源,需要使用ipcrm命令。

1.2. 创建和配置TMS

1) 编辑/udataobj/RM 加入如下行:

Oracle_XA:xaosw:-L${ORACLE_HOME}/lib –lclntsh 其格式为:

rm_name:rm_structure_name:library_names

Oracle使用32位,RM中这么写: # ORACLE 9

Oracle_XA:xaosw:-L${ORACLE_HOME}/lib32 -lclntsh

事实上,RM不需要写的很复杂,在32位模式下,写入下面的语句就足够了 Oracle_XA:xaosw:-L${ORACLE_HOME}/lib32/

${ORACLE_HOME}/precomp/lib32/cobsqlintf.o -lclntsh 当然,把那些库写到RM中也能带来一定的方便,至少buildserver时可以少写一些参数。 我的习惯是在makefile中把这些东东写在CFLAGS变量中然后传递给buildserver,也是很灵活方便的

此外,我在oracle9i下好像没找到libsql.a这个库还有,如果你加了`cat $ORACLE_HOME/lib32/sysliblist`就不需要再写-lld -lm -lc_r -lpthread了 2) 编译生成TMS server

buildtms -v -o name -r rm_name_in_RM 例如:

buildtms -o $TUXDIR/bin/TMS_ORA9i -r Oracle_XA

2. 性能监控前准备

2.1. 监控应用程序的方法

2.2. 选择合适的监控工具

2.3. 用管理控制台监控应用程序 2.4. 用命令行工具监控应用程序

2.5. 用EventBroker监控应用程序 2.6. 用日志文件监控应用程序

2.7. 用MIB监控应用程序 2.8. 用运行时和用户级跟踪工具

 设置客户端的TMTRACE环境变量

TMTRACE=on

日志输出到ulog日志中  使用表达式

1) 运行时表达式 TMTRACE=atmi:/tpservice/ulog 2) 用户级表达式

TMTRACE=atmi:utrace

可以用tmadmin的changetrace命令激活和删除跟踪设置。

2.9. 用DBBL和BBL处理错误 2.10. 用ATMI处理系统级和应用级错误

BLOCKTIME 6

2.11. 监控多线程多上下文应用程序 2.12. 如何查看tuxedo的详细版本

1) 查看大版本 tmadmin -v 2) 查看补丁

${TUXDIR}/udataobj/patchlev

2.13. 了解应用的配置

1) 登录应用系统

2) 切换到tuxedo用户(假设用户名为tuxedo)

#su - tuxedo

3) 确定tuxedo软件的安装目录

$ echo $TUXDIR /tuxedo97

4) 确定应用系统的安装目录

$ echo $APPDIR

/tux97_app/spgroup/bin 5) 确定应用配置的存放目录

$ echo $TUXCONFIG

/tux97_app/spgroup/bin/tuxconfig

6) 将当前正在运行的配置文件信息存储到tuxconfig.backup

tmunloadcf > tuxconfig.backup dmunloadcf > domconfig.backup

> bbs

Current Bulletin Board Status:

Current number of servers: 546 Current number of services: 12059 Current number of request queues: 249 Current number of server groups: 4 Current number of interfaces: 0 7) 确定DOM配置文件的存放目录

$ echo $BDMCONFIG

/tux97_app/spgroup/bin/dmconfig 8) 查看dom信息

$dmadmin

>default –d domname >printdomain >printstats

> help pd

printdomain (pd) Print information about the named local domain --------------------------------------------------------------- printdomain (pd) -d local_domain_name

> printdomain -d bill13 Local domain :bill13

Connected domains:

Domainid: sp3_1_lf Domainid: 666666_hd Domainid: kf_hd Domainid: kf_lf Domainid: sp3_dm_t Domainid: sp3_1_cz Domainid: wtc1 Domainid: sp3_dm_c Domainid: wtc2 Domainid: wtc6 Domainid: kf_cz1 Domainid: ap2_2 Domainid: kf_bd Domainid: kf_cz2 Domainid: simpapp_bd Domainid: wtc5 > printstats -d bill13

Time statistics were reset: Thu Jul 26 23:37:17 2007

Total # of service requests received from \"local\" requesters: 0 Total # of service requests received from remote domains: 0 Total # of service replies sent to \"local\" requesters: 0 Total # of service replies sent to remote domains: 0 Total # of active service requests : 0 Total # of service requests completed: 0 Total # of service requests that failed: 0

Total # of conversational service requests received from \"local\" requesters: 0 Total # of conversational sends sent to \"local\" requesters: 0

Total # of conversational service requests received from remote domains: 0 Total # of conversational sends sent to remote domains: 0 Total # of active conversational service requests: 0 Total # of transactions begun: 0 Total # of transactions committed: 0 Total # of transactions rolled back: 0

Total # of heuristic transactions committed: 0 Total # of heuristic transactions rolled back: 0 Total # of active events: 0

Total # of suspended /T events: 0 Total # of suspended NW events: 0

Total # of shared memory contentions: 0 Total # of log contentions: 0

Disconnected domains being retried: Domainid: ap1_2 Domainid: ap1_1 Domainid: ap2_1

Domainid: simpapp2_bd

> pt -d bill13

No outstanding transactions

2.14. 设置report选项

在命令行CLOPT参数中,加入-r选项,可以用-e选项指定日志文件的名称。 GlobalServ SRVGRP=\"GROUP1\" SRVID=1 MIN=15 MAX=25 RQADDR=\"GlobalServ1\" REPLYQ=Y

CLOPT=\"-A -r -p 1,100:2,10\"

使用-r选项时,确保ULOGDEBUG环境变量已设为y

在SERVICES部分,设置如下参数:

*SERVICES servopts -r

3. 性能监控

3.1. 查看ULOG日志

ULOG日志每天生成一个 日志格式:

hhmmss.hostname!.processname.processid.threadid.contextid:message name:message number:message text

系统信息日志例子:

151550.gumby!BBL.28041.1.0: LIBTUX_CAT:262: std main starting

151550.gumby!BBL.28041.1.0: LIBTUX_CAT:358: reached UNIX limit on semaphore ids 151550.gumby!BBL.28041.1.0: LIBTUX_CAT:248: fatal: system init function ... 151550.gumby!BBL.28040.1.0: CMDTUX_CAT:825: Process BBL at SITE1 failed ... 151550.gumby!BBL.28040.1.0: WARNING: No BBL available on site SITE1. Will not attempt to boot server processes on that site.

catlog

tlisten信息日志例子:

121449.gumby!simpserv.27190.1.0: LIBTUX_CAT:262: std main starting

3.2. 查看TLOG日志

1) 将二进制形式的TLOG转换成文本文件形式。

$tmadmin

>dumptlog [-z config] [-o offset] [-n filename] [-g groupname] -z:TLOG的路径 -o:默认为0

-n:默认为TLOG

-g:只转换指定组名的TLOG

2) 将文本文件形式TLOG转换成二进制形式的TLOG

$tmadmin

>loadtlog -m machine filename

3.3. 性能监控脚本

uname -a while true do date

netstat -an|grep TIME_WAIT|wc -l

echo pclt |tmadmin -r|grep -v tmadmin|grep -v WSH|wc –l

echo psr |tmadmin -r|grep -v IDLE|sort +0 echo pq |tmadmin -r|sort +4|grep -v \" 0 \" #vmstat 1 50

ipcs -qob|grep -v \" 0 \"|sort +7 sleep 5 done

3.4. 各监控命令输出的含义 3.4.1. psr输出服务器信息

以下是tmadmin命令的printserver(简写为psr)的简单输出。 列项 Prog Name Queue Name Grp Name ID RqDone LoadDone 含义 服务的可执行文件名 服务连接的队列名 组名 服务的数字id 服务已经处理的请求数 服务处理的全部请求的参数和,为已处理的请求数乘以负载因子,即RqDone*LOAD Current Service

> Prog Name Queue Name Grp Name ID RqDone Load Done Current Service QRRept 00100.00030 QRGRP 30 164 8200 QRGETRDATA WMEngineSvr WMEngineSv+ WFMSGRP 222 1384 69200 WMCreProcInst WMWorkItemSvr WMWorkItem+ WFMSGRP 251 684 34200 WMRetWkItem WMWorkItemSvr WMWorkItem+ WFMSGRP 253 663 33150 WMGetSoWkItem WMWorkItemSvr WMWorkItem+ WFMSGRP 254 638 31900 WMGetSoWkItem

服务正在处理的交易,若为IDLE则服务当前是空闲 3.4.2. psc输出服务信息

以下是tmadmin命令的printservice(简写为psc)的简单输出。

列项 Service Name Routine Name Prog Name Grp Name ID Machine #Done Status 含义 交易名 交易函数名 服务可执行文件名 服务所在组名 服务的数字id 提供交易的机器的LMID 交易已经执行的次数 交易当前状态 > Service Name Routine Name Prog Name Grp Name ID Machine # Done Status ACS_GEN_U ACS_GEN_U acs_serv2 ORAGRP 1500 telcom 0 AVAIL ACS_G_1ST ACS_G_1ST acs_g_info ORAGRP 2800 telcom 2541283 AVAIL ACS_G_CNT ACS_G_CNT acs_g_info ORAGRP 2800 telcom 0 AVAIL ACS_IVQ_U ACS_IVQ_U acs_serv2 ORAGRP 1500 telcom 0 AVAIL ACS_LOG_ACS+ ACS_LOG_ACS+ uc_temp_w+ ORAGRP 2000 telcom 0 AVAIL ACS_Q_FILD_U ACS_Q_FILD_U acs_serv2 ORAGRP 1500 telcom 0 AVAIL

3.4.3. pq输出队列信息

以下是tmadmin命令的printqueue(简写为pq)[qaddress]的简单输出。如果不指定address,所有队列信息将被输出。

列项 Prog Name Queue Name #Serve Wk Queued #Queued 含义 队列连接的服务的可执行文件名 字符队列名,是RQADDR参数或一个随机值 连接的服务数 当前队列的所有请求的参数和,为排队数乘以负载因子,即#Queued*LOAD 实际请求数,为当前队列的排队数 Ave.Len Machine

平均队列长度 队列所在机器的LMID > Prog Name Queue Name # Serve Wk Queued # Queued Ave. Len Machine net_svr 00001.01800 1 5150 103 0.4 telcom GWTDOMAIN 00009.01003 1 72650 1453 461.2 telcom

3.4.4. pclt输出客户端信息

以下是tmadmin命令的printclient(简写为pclt)的输出:

列项 LMID User Name Client Name Time Status 含义 已经登录的客户端机器的LMID 用户名,由tpinit()提供的 客户端名,由tpinit()提供的 客户端连接后经过的时间 客户端状态 IDLE――表示客户端目前没有任何交易在工作 IDLET――表示客户端启动了一个交易 BUSY――表示客户端在工作中 BUSYT――表示客户端正在交易控制下工作 Bgn/Cmmt/Abrt

启动/提交/中断的交易数 LMID User Name Client Name Time Status Bgn/Cmmt/Abrt simple ccsmis WSH 17:42:47 IDLE 0/0/0 simple ccsmis tmadmin 0:44:28 IDLE 0/0/0

4. 性能分析

txrpt [-t] [-n names] [-d mm/dd] [-s time] [-e time]

-t:按使用的总时间排序,不使用这个选项,则按调用次数排序。 -n:只对指定的服务进行分析,多个服务名之间用逗号分隔。 -d:指定月/日,默认为当天。 -s:开始时间 -e:结束时间

txrpt -d 04/24 -s 11:00 -e 15:00 < tracelog

5. 性能优化及建议

5.1. 何时使用MSSQ队列

5.2. 配置domain网关时注意的步骤及问题

InformixJStuxedoCTStuxedo银行 以上是配置域访问的一个场景,首先券商(JS)域中的服务会调用CTS域的服务;然后银行端也会通过CTS域调用JS域的服务。 1) 券商端ubb配置ubbjs *GROUPS

GROUP_APP LMID=TUXAPP GRPNO=3 OPENINFO=NONE GROUP_APP2 LMID=TUXAPP GRPNO=5 OPENINFO=NONE \"GWTGP1\" LMID=TUXAPP GRPNO=31 TMSCOUNT=3

\"GWTGP2\" LMID=TUXAPP GRPNO=32 TMSCOUNT=3 GROUP_WSL LMID=TUXAPP GRPNO=4 OPENINFO=NONE LDMGRP LMID=TUXAPP GRPNO=20 LGWGRP LMID=TUXAPP GRPNO=21 *SERVERS

# first start part DMADM SRVGRP=LDMGRP SRVID=1 GWADM SRVGRP=LGWGRP SRVID=1

GWTDOMAIN SRVGRP=LGWGRP SRVID=2 CLOPT=\"-A -t -- \"

GWADM SRVGRP= GWTGP1 SRVID=20001

GWTDOMAIN SRVGRP= GWTGP1 SRVID=20002 CLOPT=\"-A -t -- \" GWADM SRVGRP= GWTGP2 SRVID=20003

GWTDOMAIN SRVGRP= GWTGP2 SRVID=20004 CLOPT=\"-A -t -- \" *SERVICES

2) 券商端domain配置dmjs *DM_RESOURCES *DM_LOCAL

\"ctsccb1\" GWGRP=GWTGP1 # 和券商ubb配置文件中GWTDOMAIN的GROUP名相同 ACCESSPOINTID=\"ctsccb1\" BLOCKTIME=10 DMTLOGNAME=\"DMTLOG\" MAXTRAN=100 BLOB_SHM_SIZE=1000000 CONNECTION_POLICY=INCOMING_ONLY

\"ctsccb2\" GWGRP=GWTGP2 # 和券商ubb配置文件中GWTDOMAIN的GROUP名相同 ACCESSPOINTID=\"ctsccb2\" BLOCKTIME=10 DMTLOGNAME=\"DMTLOG\" MAXTRAN=100 BLOB_SHM_SIZE=1000000 CONNECTION_POLICY=INCOMING_ONLY dm_0011 GWGRP=LGWGRP # equal GWTDOMAIN 's GROUP name # DOMAINID=dm_vip_0011 ACCESSPOINTID=\"dm_vip_0011\" BLOCKTIME=10 DMTLOGNAME=\"DMTLOG\" MAXTRAN=100 BLOB_SHM_SIZE=1000000 *DM_REMOTE dm_0100 ACCESSPOINTID=\"dm_0100\" DOMAINID=dm_vip_0100

\"ctsqs0087_1\" ACCESSPOINTID=\"ctsqs0087_1\" CREDENTIAL_POLICY=\"LOCAL\" \"ctsqs0087_2\" ACCESSPOINTID=\"ctsqs0087_2\" CREDENTIAL_POLICY=\"LOCAL\" \"ctsqs0097_1\" ACCESSPOINTID=\"ctsqs0097_1\" CREDENTIAL_POLICY=\"LOCAL\" \"ctsqs0097_2\" ACCESSPOINTID=\"ctsqs0097_2\" CREDENTIAL_POLICY=\"LOCAL\" *DM_TDOMAIN

#配置JS域本地的IP地址和端口号,这个地址只需要本机端口号唯一就可以。 dm_0011 NWADDR=\"//h0011ap:20212\" MINENCRYPTBITS=56 DMKEEPALIVE=20000 DMKEEPALIVEWAIT=10000 dm_0100 NWADDR=\"//h0100ap:20212\"

MINENCRYPTBITS=56

#配置JS域访问CTS域的IP地址和端口号,这个地址必须和CTS域配置的local地址对应 \"ctsccb1\" NWADDR=\"//h0011ap:20501\" MINENCRYPTBITS=56 DMKEEPALIVE=20000 DMKEEPALIVEWAIT=10000 \"ctsccb2\" NWADDR=\"//h0011ap:20502\" MINENCRYPTBITS=56 DMKEEPALIVE=20000 DMKEEPALIVEWAIT=10000

\"ctsqs0087_1\" NWADDR=\"//ctsqs0087:20501\" MINENCRYPTBITS=56

\"ctsqs0087_2\" NWADDR=\"//ctsqs0087:20502\" MINENCRYPTBITS=56

\"ctsqs0097_1\" NWADDR=\"//ctsqs0097:5051\" MINENCRYPTBITS=56

\"ctsqs0097_2\" NWADDR=\"//ctsqs0097:5052\" MINENCRYPTBITS=56 *DM_IMPORT secrcv_0087

PRIO=50

RACCESSPOINT=ctsqs0087_1 LACCESSPOINT=ctsccb1 TRANTIME=30 AUTOPREPARE=N secrcv_0087

PRIO=50

RACCESSPOINT=ctsqs0087_1 LACCESSPOINT=ctsccb2 TRANTIME=30 AUTOPREPARE=N ftpfile0087

PRIO=50

RACCESSPOINT=ctsqs0087_1 LACCESSPOINT=ctsccb1 TRANTIME=30 AUTOPREPARE=N secrcv_0097

PRIO=50

RACCESSPOINT=ctsqs0097_1 LACCESSPOINT=ctsccb1 TRANTIME=30 AUTOPREPARE=N ftpfile0097

PRIO=50

RACCESSPOINT=ctsqs0097_1 LACCESSPOINT=ctsccb2 TRANTIME=30 AUTOPREPARE=N *DM_EXPORT \"comrcv\" \"ftpfile\"

s0011_dispatch LDOM=dm_0011 s0011_GETLEN LDOM=dm_0011 s0011_TUXSFTP LDOM=dm_0011

s0011_secsvr LDOM=dm_0011 CONV=Y 3) CTS端ubb配置ubbcts *RESOURCES IPCKEY 35231 MASTER \"ctsqs\" PERM 0666 MAXACCESSERS 600

MAXACLGROUPS 16384 MAXGTT 200 DOMAINID \"cts0087\" BBLQUERY 60 BLOCKTIME 12 NOTIFY DIPIN SYSTEM_ACCESS FASTPATH MAXINTERFACES 150 MAXOBJECTS 1000 SIGNATURE_AHEAD 3600 SIGNATURE_BEHIND 604800 USIGNAL SIGUSR2 *MACHINES

\"ctsqs75\" LMID=\"ctsqs\" TUXCONFIG=\"/home/ctsbridge/cfg/tuxconfig\" TUXDIR=\"/home/tuxedo/tuxedo8.1\" APPDIR=\"/home/ctsbridge/bin/\" ULOGPFX=\"/home/ctsbridge/log/ULOG\" MAXWSCLIENTS=20 CMPLIMIT=\"MAXLONG,MAXLONG\" NETLOAD=0 *GROUPS

\"GROUP1\" LMID=\"ctsqs\" GRPNO=1 TMSCOUNT=3

\"DMADMGRP\" LMID=\"ctsqs\" GRPNO=4 TMSCOUNT=3

\"GWTGP1\" LMID=\"ctsqs\" GRPNO=5 TMSCOUNT=3

\"GWTGP2\" LMID=\"ctsqs\" GRPNO=6 TMSCOUNT=3 *NETGROUPS *SERVERS

\"DMADM\" SRVGRP=\"DMADMGRP\" SRVID=1001 CLOPT=\"-A\" RQPERM=0666 REPLYQ=N RPPERM=0666 MIN=1 MAX=1 SYSTEM_ACCESS=FASTPATH MAXGEN=1 GRACE=86400 RESTART=N MINDISPATCHTHREADS=0 MAXDISPATCHTHREADS=1 THREADSTACKSIZE=0 SICACHEENTRIESMAX=\"500\"

\"GWADM\" SRVGRP=\"GWTGP1\" SRVID=1002 CLOPT=\"-A\" RQPERM=0666 REPLYQ=N RPPERM=0666 MIN=1 MAX=1 SYSTEM_ACCESS=FASTPATH MAXGEN=1 GRACE=86400 RESTART=N MINDISPATCHTHREADS=0 MAXDISPATCHTHREADS=1 THREADSTACKSIZE=0 SICACHEENTRIESMAX=\"500\"

\"GWTDOMAIN\" SRVGRP=\"GWTGP1\" SRVID=1003 CLOPT=\"-A\" RQPERM=0666 REPLYQ=N RPPERM=0666 MIN=1 MAX=1 SYSTEM_ACCESS=FASTPATH MAXGEN=1 GRACE=86400 RESTART=N MINDISPATCHTHREADS=0 MAXDISPATCHTHREADS=1 THREADSTACKSIZE=0 SICACHEENTRIESMAX=\"500\"

\"GWADM\" SRVGRP=\"GWTGP2\" SRVID=1004 CLOPT=\"-A\" RQPERM=0666 REPLYQ=N RPPERM=0666 MIN=1 MAX=1 SYSTEM_ACCESS=FASTPATH MAXGEN=1 GRACE=86400 RESTART=N MINDISPATCHTHREADS=0 MAXDISPATCHTHREADS=1 THREADSTACKSIZE=0 SICACHEENTRIESMAX=\"500\"

\"GWTDOMAIN\" SRVGRP=\"GWTGP2\" SRVID=1005 CLOPT=\"-A\" RQPERM=0666 REPLYQ=N RPPERM=0666 MIN=1 MAX=1 SYSTEM_ACCESS=FASTPATH MAXGEN=1 GRACE=86400 RESTART=N MINDISPATCHTHREADS=0 MAXDISPATCHTHREADS=1

CONV=N

CONV=N

CONV=N

CONV=N

CONV=N

THREADSTACKSIZE=0 SICACHEENTRIESMAX=\"500\" *SERVICES

4) CTS端domain配置dmcts *DM_RESOURCES *DM_LOCAL

# 和CTS ubb配置文件中GWTDOMAIN的GROUP名相同 \"ctsqs0087_1\" GWGRP=GWTGP1 ACCESSPOINTID=\"ctsqs0087_1\" BLOCKTIME=10 CONNECTION_POLICY=ON_STARTUP RETRY_INTERVAL=60 MAXRETRY=MAXLONG

# 和CTS ubb配置文件中GWTDOMAIN的GROUP名相同 \"ctsqs0087_2\" GWGRP=GWTGP2

ACCESSPOINTID=\"ctsqs0087_2\" BLOCKTIME=10 CONNECTION_POLICY=ON_STARTUP RETRY_INTERVAL=60 MAXRETRY=MAXLONG *DM_REMOTE *DM_TDOMAIN

#配置CTS域本地的IP地址和端口号,这个地址只需要本机端口号唯一就可以。 \"ctsqs0087_1\" NWADDR=\"//ctsqs0087:20501\" MINENCRYPTBITS=56 DMKEEPALIVE=20000 DMKEEPALIVEWAIT=10000

\"ctsqs0087_2\" NWADDR=\"//ctsqs0087:20502\" MINENCRYPTBITS=56 DMKEEPALIVE=20000 DMKEEPALIVEWAIT=10000

#配置CTS域访问JS域的IP地址和端口号,这个地址必须和JS域配置的local地址对应 \"ctsccb1\" ACCESSPOINTID=\"ctsccb1\" CREDENTIAL_POLICY=\"LOCAL\" \"ctsccb2\" NWADDR=\"//ctsccb:20502\" MINENCRYPTBITS=56 *DM_IMPORT \"comrcv\" \"ftpfile\"

*DM_EXPORT \"ftpfile0087\" \"secrcv_0087\"

5) 主要各个域配置中远程地址、本地地址需要注意IP地址和端口号的匹配。

5.3. 如何启用负载均衡

1) 在RESOURCES部分,设置如下参数:

*RESOURCES LDBAL Y

2) 在SERVICES部分,设置如下参数:

*SERVICES

DEFAULT: LOAD=50

如果某个服务使用的时间比平均时间长,则为LOAD>50,如果某个服务使用的时间比平均时间短,则为LOAD<50

5.4. 如何设置接口或服务的优先级

在SERVICES部分,设置如下参数:

*SERVICES

servicename PRIO=50 PRIO值越大优先级越高。

5.5. 邦定多个服务(service)到服务器(server)

归类的原则: 1) 功能类似 2) 加载的库类似

5.6. 提高系统整体性能

以下优化只对Tuxedo 8.0或以后的版本有效。 1) 服务和接口缓存

2) 关闭授权和审核安全选项 3) 关闭多线程处理选项 4) 关闭XA事务选项

5.7. 确定系统的IPC资源

>tmloadcf –c ubb

上述输出含义如下:

1) 每个CPU的最少的固定IPC需求: Shmmin至少为1 Shmall至少为1

Semmap至少为semmni

2) 每个CPU的最少的可变IPC需求: Semume、semmnu、semmns至少为65 semmsl至少为8

A* semmsl至少为60, (所以A=60/8) semmni至少为A+1 msgmni至少为27 msgmap至少为54

shmmax*shmseg至少为407k

5.8. 优化IPC参数

MAXACCESSERS, MAXSERVERS, MAXINTERFACES和MAXSERVICES对信号量和共享内存的设置影响比较大。

如果CPU比较慢,可以将SANITYSCAN,BLOCKTIME及事务超时时间设大些,如果网络比较慢,可以将BLOCKTIME, BBLQUERY和DBBLWAIT设大些。

5.8.1. Unix系统IPC资源配置建议

参数名 SHMMAX SHMSEG 含义 共享内存段的最大值 每个进程可以拥有的共享内存段的最大数量 操作系统所允许的建议值 6~15 说明 一个进程可以有多个共享内存段 SHMMNI 大于 共享内存段的最大数量 SHMMIN 每个进程可以拥有的共享内存段的最小数量 操作系统所允许的最大信号量 应该总是1 SEMMNS 大于 MAXACCESSERSMAXACCESSERS - MAXWSCLIENTSMAXWSCLIENTS + ubb中的参数 13 等于SEMMNI 大于 SEMMNS 一般为1 、为SEMMNI SEMMSL SEMMAP SEMMNU 最大可以并发工作的信号量集 每个信号量集可以打开的信号量数量 信号量集的影射数量 操作系统undo结构的数量 每个操作系统undo结构允许包含的条目数量 操作系统可以存储的最大消息数 每个消息队列可以存储的最大字节数 每个消息允许的最大字节数 操作系统可以同时处理的消息数 每个消息段的字节数 消息段的影射数量 操作系统所允许的最大队列数量 SEMMNI* SEMMSL应该小于SEMMNS 应该和SEMMNI相等 Unix操作系统用undo结构解锁异常进程的信号量 SEMUME MSGTQL MSGMNB MSGMAX MSGSEG MSGSSZ MSGMAP MSGMNI 等于MSGSEG 大于 MAXACCESSERS + 7 + (number of servers with REPLYQ)+ (number of MSSQ sets)- (number of servers in MSSQ sets) 任意时刻操作系统可以存储的未读的最大消息数 应该和MSGSEG相等 ULIMIT NOFILES MAXUP NPROC

每个文件允许的最大字节数 每个进程能打开的最大文件数 每个非超级用户能打开的最大进程数 操作系统允许的最大进程数

5.9. 测量系统流量

6. 故障解决(troubleshooting)

6.1. 如何产生和查看core dump信息

1) 产生core dump信息 Redhat Linux gcore pid

kill -6 pid Solaris

kill -3 pid

2) 查看core dump

strings coreFileName

6.2. 如何查看tuxedo的详细版本

1) 查看大版本 tmadmin -v 2) 查看补丁

${TUXDIR}/udataobj/patchlev

6.3. 确定故障类型

6.4. 如何主动向最终客户发消息 6.5. 维护系统文件 6.6. 恢复时需要考虑的 6.7. 修复Partitioned网络 6.8. 恢复故障机器 6.9. 如何替换系统组件 6.10. 如何替换应用组件

6.11. 手动清除资源和重启服务器(server) 6.12. 撤销或提交事务

6.13. 当使用事务时,如何从故障中恢复。 6.14. 当应用停止失败时,如何使用IPC工具

6.15. 在应用启动时,有一组TMS启动时间过长或起不来

TMS在非正常停止后,在下次启动时,会和数据库进行事务回滚的交互。由于XA的特性,有可能时间很长。

在确认不会引起事务不一致的情况下,可以通过重新初始化TLOG或者重建来完成。

通过tmadmin初始化TLOG,步骤如下: 1) 进入配置界面。

$tmadmin –c

2) 查找TLOG的索引号, TLOGDEVICE_value为配置文件*MACHINES中,TLOGDEVICE

参数值。

> lidl –z TLOGDEVICE_value

3) 初始化TLOG。

>initdl –z TLOGDEVICE_value index_value

7. 附录

monitor.sh uname -a while true do date

netstat -an|grep TIME_WAIT|wc -l

echo pclt |tmadmin -r|grep -v tmadmin|grep -v WSH|wc -l echo psr |tmadmin -r|grep -v IDLE|sort +0 echo pq |tmadmin -r|sort +4|grep -v \" 0 \" #vmstat 1 50

ipcs -qob|grep -v \" 0 \"|sort +7 sleep 5 done monclt.sh #!/usr/bin/sh

#. $HOME/.profile

export FLDTBLDIR32=$TUXDIR/udataobj export FIELDTBLS32=tpadm,Usysfl32 while : do

# echo \"=============================================\" >> ~/cltmon.txt

# date >> ~/cltmon.txt

# echo \"total client's numbers:\" >> ~/cltmon.txt

ud32 -C tpsysadm < ~/ud.txt | grep \"//\" | wc -l >> ~/cltmon.txt sleep 3 done ud.txt

$ cat ~/ud.txt

SRVCNM .TMIB

TA_CLASS T_CLIENT TA_OPERATION GET

ipccls.sh

#ipcrm `ipcs | grep $1 | awk '{ print \"-\" $1 \" \" $2 }'`

ipcrm `ipcs | grep tuxedokf | awk '{ print \"-\" $1 \" \" $2 }'`

因篇幅问题不能全部显示,请点此查看更多更全内容

Top