Tuxedo性能调优经验谈.docx
《Tuxedo性能调优经验谈.docx》由会员分享,可在线阅读,更多相关《Tuxedo性能调优经验谈.docx(17页珍藏版)》请在冰点文库上搜索。
Tuxedo性能调优经验谈
Tuxedo性能调优经验谈
TUXEDO应用系统对IPC资源的要求
一个TUXEDO应用系统在运行时会大量用到IPC资源,包括信号灯,消息队列及共享内存,下面对他们的使用情况及与他们有关的操作系统核心参数分别进行介绍:
UBBCONFIG中与IPC资源有关的配置参数
主要有:
MAXACCESSERS,REPLYQ,RQADDR,MAXSERVERS,MAXSERVICE,MAXGTT
TUXEDO应用系统对IPC资源的要求情况
信号灯:
一个进程在要存取TUXEDO应用系统的公告板(BB)之前,它要先获取一个信号灯,所以TUXEDO应用系统所需要的最大信号灯数与MAXACCESSERS的值相等.即:
MAXACCESSERS=No.ofsemaphores
与信号灯有关的操作系统核心参数有:
SEMMNS(maximumnumberofsemaphoresinuseinthesystem)
SEMMNI(maximumnumberofactivesemaphoresets)
SEMMSL(maximumnumberofsemaphorespersemaphoreset)
SEMMAP(sizeofcontrolmapusedtomanagesemaphoresets)
SEMMNU(numberofundostructuresinthesystem)
SEMUME(maximumnumberofundoentriesperundoentries)
消息队列:
TUXEDO应用系统在以下几种情况下会用到操作系统的消息队列
1.每个SERVER都对应一个消息队列,客户端的请求发送到该消息队列中,该SEVER从
该消息队列中取请求并处理。
2.如果是本地客户端,那么它也对应一个消息队列,用于接收SERVER的处理结果。
如果
是远程客户端,那么SERVER的处理结果通过网络传送,不会占用消息队列。
3.如果采用MSSQ方式,那么在个MSSQ中的所有SERVER共用一个请求队列。
4.如果某个SERVER或在MSSQ中设置了REPLYQ=Y,那么它要占用一个消息队列
所以一个TUXEDO应用系统需要的最大消息队列为:
NumberofQueues=(MAXACCESSERS+NumberofServerswithReplyQueues+
NumberofMSSQSets-NumberofServersinMSSQSets)
与消息队列有关的操作系统核心参数必须满足:
1.消息队列的个数要足够多,能够满足系统的最大需求
2.消息的大小必须能满足系统可能出现的最大的消息的大小
3.消息队列的长度要足够长,能容纳下较多的消息个数,使入对操作不用等待或不用等太长
的时间
与消息队列有关的操作系统核心参数有:
MSGMNI(numberofuniquemessagequeueidentifiers)
MSGMAP(sizeofcontrolmaptomanagemessagesegments)
MSGMAX(maximummessagesize)
MSGMNB(maximummessagequeuelength)
MSGSSZ(sizeofamessagesegment)
MSGTQL(numberofoutstandingmessages)
MSGSEG(numberofmessagesegmentsinthesystem)
TUXEDO把整个应用系统的配置信息放到共享内存中,一个TUXEDO应用系统所需要的共享内存由以下参数及配置决定:
1.MAXSERVERS,MAXSERVICE,MAXGTT的值
2.*ROUTING,*GROUP,*NETWORK节的大小
与共享内存有关的操作核心参数有:
SHMMAX(maximumsharedmemorysegmentsize)
SHMSEG(maximumnumberofsharedmemorysegmentsperprocess)
SHMMNI(maximumnumberofsharedmemoryidentifiersinthesystem)
SHMMIN(maximumsharedmemorysegmentsize)一般要设为1
一个TUXEDO应用系统在运行时所需要的IPC资源的计算
一个TUXEDO应用系统在运行时所需要的IPC资源可用tmboot-c计算出来.如UBBCONFIG的内容为:
*RESOURCES
IPCKEY123456
DOMAINIDsimpapp
MASTERsimple
MAXACCESSERS100
MAXSERVERS50
MAXSERVICES100
MODELSHM
*MACHINES
MYSERVERLMID=simple
APPDIR="d:
\tuxdemo\conn"
TUXCONFIG="d:
\tuxdemo\conn\tuxconfig"
TUXDIR="d:
\tuxedo65"
MAXWSCLIENTS=5
*GROUPS
GROUP1
LMID=simpleGRPNO=1
GROUP2
LMID=simpleGRPNO=11
*SERVERS
DEFAULT:
CLOPT="-A"
callSRVGRP=GROUP1SRVID=2
connSRVGRP=GROUP2SRVID=12CONV=Y
WSLSRVGRP=GROUP1SRVID=1116
CLOPT="-A---n//XCJ:
8888-m2-M5-x6"
*SERVICES
TOUPPER
以上的配置所需要的IPC资源可用tmboot-c计算出,结果如下,可根据计算结果调整操作系统的核心参数.
D:
\tuxdemo\conn>tmboot-c-y
Ipcsizing(minimum/Tvaluesonly)...
FixedMinimumsPerProcessor
SHMMIN:
1
SHMALL:
1
SEMMAP:
SEMMNI
VariableMinimumsPerProcessor
SEMUME,ASHMMAX
SEMMNU,**
NodeSEMMNSSEMMSLSEMMSLSEMMNIMSGMNIMSGMAPSHMSEG
------------------------------------------------
XCJ12015115A+12550180K
where1<=A<=8.
Thenumberofexpectedapplicationclientsperprocessorshould
beaddedtoeachMSGMNIvalue.
从输出可知道:
SEMUME,SEMMNU,SEMMNS的值为120,
SEMMSL为15
A*SEMMSL=115,所以A=7,SEMMNI=A+1,所以SEMMNI=8
MSGMNI为25
MSGMAP为50
SHMMAX*SHMSEG必须等于180K
其他核心参数:
在UNIX系统中,对一个用户能拥有的系统资源(如最多能启动的进程数,打开的文件数等)是有限制的。
主要有以下参数决定:
ULIMIT(maximumfilesize)
TUXEDO用户所能创建的最大文件,应考虑创建的SERVER文件的可能大小及ULOG的大小,一个应为ULIMIT。
MAXUP(maximumnumberofprocessesperuser)
TUXEDO用户所能创建的最大进程数,应设的足够大
IPC资源不够时的出错信息
如果ULOG中出现类似下面的错误,那么就是操作系统的核心参数值或操作系统的资源不够,应进行调整
ClientscannotlogintoBEATUXEDO,receiveerrormessagesattpinit:
nospaceinBulletinBoard
can'tregister;tablefull
systeminitfunctionfailed
Globaltransactionfails,clientorserverreportsfailuremessage
NewserversorWSHcannotbestartedbyBEATUXEDOasneeded,errorinlogfile
Messagequeuesbecomecloggedorinaccessible
Writeaccesserrors,filesystemordiskisfull
操作系统核心参数的调整方法
不同操作系统,核心参数的调整方法都不太一样,一般由系统管理员来进行调整.这里不作介绍.在UNIX系统中,只要ROOT用户才能对系统的核心参数进行调整。
并且一般要重新启动系统所做的调整才能生效。
在调整之前最好对原来的参数做一个备份。
SOLARISE系统核心参数的调整
SOLARISE系统的核心参数保存在文件/etc/system中,可直接对它进行编辑
右边为添加的说明。
#与共享内存有关的核心参数
setshmsys:
shminfo_shmmax=4967295#Maximumsharedmemorysegmentsizeinbytes.
setshmsys:
shminfo_shmmin=1#
setshmsys:
shminfo_shmmni=100#
setshmsys:
shminfo_shmseg=10#<6-15>Maximumnumberofsharedmemory
#segmentsperprocess.Themaximumamountof
#sharedmemoryinbytestowhichaprocesscan
#attachisSHMMAX*SHMSEG.
#与消息队列有关的核心参数
setmsgsys:
msginfo_msgmni=600#Numberofuniquemessagequeueidentifiers.
setmsgsys:
msginfo_msgmax=10240#Maximummessagesizeinbytes.
setmsgsys:
msginfo_msgmnb=6600000#Maximummessagequeuelengthinbytes.
setmsgsys:
msginfo_msgmap=1200#(2*msgmni)Numberofentriesinthecontrol
#mapusedtomanagemessagesegments.
setmsgsys:
msginfo_msgseg=1200#(2*msgmni)Numberofmessagesegmentsinthe
#system.
*setmsgsys:
msginfo_msgtql=400
#与信号灯有关的核心参数
setsemsys:
seminfo_semmns=600#Maximumnumberofsemaphoresinthesystem.
setsemsys:
seminfo_semmni=100=semmns#Maximumnumberofactivesemaphoresets.
setsemsys:
seminfo_semmsl=600=semmns#Maximumnumberofsemaphoresper
#semaphoreset.
setsemsys:
seminfo_semmap=600=semmni
setsemsys:
seminfo_semume=1
setsemsys:
seminfo_semmnu=600>semmns
也可以在SOLARISE的图形化管理界面中进行配置。
HP系统核心参数的调整
1.使用系统活动监视器(SAM-SystemActivityMomitor)
(1)运行SAM并选择"内核配置",系统会显示以下四个单元的标识。
子系统
可配置参数
堆集设备
设备驱动程序
(2)选择需要修改的单元:
可配置参数
(3)按系统的提示回答问题
(4)系统询问是否重新引导系统,可回答"是",重新启动系统,使修改生效。
2.手工方式
(1)执行下列命令进入重建内核的环境
#cd/stand/build
(2)使用下列的命令对当前的系统配置产生一个系统文件,名为system
s#/usr/lbin/sysadm/system_prep-ssystem
上面的命令将所有的系统配置信息放到一个文件中,文件名不一定要为system,可
使用任何其他的文件名。
(3)对system文件进行修改,如修改已存在的参数,增加未列出的参数等。
(4)使用system文件(如果前面使用其他文件名代替system,那么这里要换为用户定义的文件名),产生conf.c文件,该文件中使用常量对应与内核的可调参数。
使用下面的命令执行config程序:
#/usr/sbin/config-ssystem
(5)把驱动器对象连接到基本的内核上以重建内核。
#make-fconfig.mk
(6)保存旧的系统配置文件
#mv/stand/system/stand/system.prev
(7)保存旧的内核
#mv/stand/vmunix/stand/vmunix.prev
(8)将新的系统配置文件移到相应的目录下
#mv./system/stand/system
(9)将新的内核移到相应的目录下
#mv/vmunix_test./stand/vmunix
(10)重新引导系统并装如新的系统
#shutdown-r-y60
AIX系统核心参数的调整
在AIX系统中,一般不能对与IPC资源有关的参数进行修改,它们是自适应的。
但可对一个用户能打开的最多进程数等其他参数进行修改。
可以用SMIT工具进行修改。
TUXEDO应用系统的性能优化方法
一、如何确定一个TUXEDO应用系统的性能瓶颈
一个TUXEDO应用系统的整体性能往往是由很多方面决定的,操作系统、网络、数据库、以及应用系统的设计,程序的编写水平都会影响该TUXEDO应用系统的性能。
当性能不好时,主要表现在对客户段的请求响应很慢。
这时,如果用tmadmin,中的pq命令察看,会发现有较多的请求在排队。
这时就要进行性能调优,而调优首先要确定整个系统的性能瓶颈所在。
那么如何确定呢?
1、如果客户端与服务端之间在进行大批量的数据传输。
可计算一下它们之间的传输速度,
并与FTP工具的速度相比较,来判断网络的速度是不是正常。
看网络是不是性能瓶颈。
2、如果客户端与服务端之间的数据传输量较少,但是服务端有大量的数据库操作。
则很有
可能数据库是性能的瓶颈,可增加该服务的进程数来提高性能。
如果增加该服务的进
程数之后,没起多大的作用。
而且用数据库的性能分析工具观察发现数据库的压力较大。
则数据库是性能的瓶颈,应对数据库的进行性能调优。
根据经验,数据库往往是一个应
用系统的性能瓶颈。
3、对UNIX操作系统,可用sar,glance(hp)等命令察看。
看CPU,IO,内存的利用率是不是正常。
对WIND2000系统,可用任务管理器察看系统的资源使用情况。
可根据观察到的结果
做相应的系统调优。
4、采用TUXEDO的性能分析工具txrpt。
txrpt可统计出系统内每个SERVICE的在某段特定时间内所处理的请求的总数及平均处
理时间,它的使用方法如下:
(1)在UBBCONFIG中SERVER节做如下设置:
即在CLOPT中加-r。
*SERVERS
DEFAULT:
CLOPT="-A-r"
或clopt="-A-e/log/wsl.log-r---n//32.22.22.22:
9999"
说明:
如果在DEFAULT的CLOPT中加-r参数是对所有的SERVICE调用都进行统计,
如果只在某个SERVER的CLOPT中加-r参数是对该SERVER中的所有的SERVICE调
用都进行统计。
重编译UBBCONFIG后,并重启动TUXEDO后,以后对SERVICE的调用统计信息会自
动写到标准错误输出文件中,默认为stderr.
(2)一段时间后,可用txrpt进行性能分析,txrpt的命令格式如下:
txrpt[-t][-nnames][-dmm/dd][-stime][-etime]
参数说明:
-t
对输出进行排序,总计处理请求所花的时间越多的排的越靠前。
如果不指定,按总
计被调用的次数越多的排的越靠前。
-nnames
只输出指定名称的SERVICE的统计信息,如果有多个,可用,隔开。
-dmm/dd
限定日期,统计指定日期的信息。
缺省为当前日期。
-stime
指定统计开始时间:
格式为:
hr[:
min[:
sec]]。
-etime
指定统计结束时间:
格式为:
hr[:
min[:
sec]]。
例子:
txrpt-nTOUPPER-d11/05-s11:
03-e14:
28thereportproducedlookslikethefollowing。
STARTAFTER:
ThuOct0511:
01:
002001
ENDBEFORE:
ThuOct0514:
18:
002001
SERVICESUMMARYREPORT
SVCNAME11a-12n13p-14p14p-15pTOTALS
Num/AvgNum/AvgNum/AvgNum/Avg
-------------------------------------
TOUPPER2/0.253/0.251/0.966/0.37
-----------------------------------
TOTALS2/0.253/0.251/0.966/0.37
上面的例子说明:
在11月5号的11:
03到14:
28这段时间内,TOUPPER被调用了6
次,平均每次的处理时间是0.37秒。
注意:
txrpt只能统计一天内的信息,即由-D指定的日期。
注意当用txrpt进行性能统计
分析时,ULOGDEBUG环境变量不要设为Y,因为它的输出信息会对txrpt造成干扰。
二、提高TUXEDO系统的性能的方法:
(1)同一个SERVER启动多个进程,如果原来某个SERVER所启动的进程数较少,可增
加它的进程数,并建议使MIN=MAX,使TUXEDO不用进行进程数的动态管理。
如果这些SERVER可配置成MSSQ方式,则应采用MSSQ方式。
如下所示:
"simpserv"SRVGRP="GROUP4"SRVID=3MIN=3MAX=10
RQADDR="simpserv"REPLYQ=Y
(2)采用多服务单队列MSSQ(multipleserverssignlequeue)
在缺省情况下,TUXEDEO的每一个SERVER对应一个请求队列,该SERVER从该
请求队列中取客户端发来的请求,并把处理的结果通过
该请求队列返回给客户端,TUXEDO的SERVER可以配置成多个SERVER对应一个
请求队列,即MSSQ方式,以提高响应的速度。
在下列情况下建议采用MSSQ:
1、服务对实时性要求很高。
2、某个SERVER需要启动多个进程才能满足需要。
3、服务端与客户端之间传送的数据量比较小。
采用MSSQ应注意以下几点:
1、客户端与服务端之间传送的数据量比较大,因为数据量很大,会把SERVER的请求
队列空间耗尽,使SERVER无法响应客户端的请求,或把处理的结果通过该请求
队列返回给客户端。
2、不要把包含的SERVICE不一样的SERVER配置成MSSQ。
3、很多的SERVER(比如30个)对应一个MSSQ,这时应把他们配置成几个MSSQ(如3
个,每个有10个SERVER)效果会更好。
4、不要认为MIN,MAX的值越大越好,主要取决于数据库的速度。
MSSQ配置的方法如下,注意如果该SERVER中的某个SERVICE调用其他的SERVICE,
并有返回结果,则REPLYQ=Y应加上,在下面的配置中,10个simpserv共用一个请求队
列,同时其中的某个SERVICE可能回调用其他的SERVICE,所以REPLYQ=Y。
"simpserv"SRVGRP="GROUP1"SRVID=2
RQADDR="simpserv"REPLYQ=YMIN=10MAX=10
(3)系统内核参数的调整
TUXEDO在运行是会大量用到系统的IPC资源,包括共享内存,信号灯,消息队列。
一般
UNIX系统缺省的值都太小,可对它们进行调整。
对由于非正常关闭TUXEDO系统,可能造成TUXEDO系统占用的系统IPC资源无法
释放,可用TUXEDO提供的工具ipclean进行回收。
(4)合理处理SERICE与SERVER的关系
如果从管理维护方面看,一个SERVICE对应一个SERVER是最简单的方式。
但这会增
加SERVER的数量,使TUXEDO系统对系统的IPC资源要求增大(使系统的性能降低),
或超过(使TUXEDO系统无法启动成功)。
所以需要把多个SERVICE放到一个SERVER
中。
以降低TUXEDO对系统IPC资源的需求。
下面是一些把SERVICE放在一起的原
则:
1.有互相调用的SERICE不要放到同一个SERVER中,以免引起死锁现象。
2.执行时间相近的SERVICE可放到同一个SERVER中。
3.同一个SERVER中的SERVICE最好有相同的服务优先级,如果不同,最低的那个
的请求可能要很长时间才得到处理。
4.一个SERVER中不要有太多的SERVICE。
5.把多资源要求相近的SERVICE放到同一个SERVER中。
6.可根据业务规则把SERVICE放到同一个SERVER中。
7.对一些使用率较高的(如:
银行的取款对应的SERVICE)应单独放在一个SERVER中,
并采用MSSQ方式。
不要把它们与其他的SERVICE放在同一个SERVER中。
(5)TUXEDO可对服务设置优先级(0-100),对于比较重要的SERVEICE,可提高它的服务
优先级,使它较快得到响应,如下面的例子,在一个银行系统中