TUXEDO应用系统对IPC资源的要求
一个TUXEDO应用系统在运行时会大量用到IPC资源,包括信号灯,消息队列及共享内存,下面对他们的使用情况及与他们有关的操作系统核心参数分别进行介绍:
UBBCONFIG中与IPC资源有关的配置参数
主要有: MAXACCESSERS ,REPLYQ,RQADDR,MAXSERVERS,MAXSERVICE,MAXGTT
TUXEDO应用系统对IPC资源的要求情况
信号灯:
一个进程在要存取TUXEDO应用系统的公告板(BB)之前,它要先获取一个信号灯,所以TUXEDO应用系统所需要的最大信号灯数与MAXACCESSERS的值相等.即:
MAXACCESSERS = No. of semaphores
与信号灯有关的操作系统核心参数有:
SEMMNS (maximum number of semaphores in use in the system)
SEMMNI (maximum number of active semaphore sets)
SEMMSL (maximum number of semaphores per semaphore set)
SEMMAP (size of control map used to manage semaphore sets)
SEMMNU (number of undo structures in the system)
SEMUME (maximum number of undo entries per undo entries)
消息队列:
TUXEDO应用系统在以下几种情况下会用到操作系统的消息队列
1. 每个SERVER都对应一个消息队列,客户端的请求发送到该消息队列中,该SEVER从
该消息队列中取请求并处理.
2. 如果是本地客户端,那么它也对应一个消息队列,用于接收SERVER的处理结果.如果
是远程客户端,那么SERVER的处理结果通过网络传送,不会占用消息队列.
3. 如果采用MSSQ方式,那么在个MSSQ中的所有SERVER共用一个请求队列.
4. 如果某个SERVER或在MSSQ中设置了REPLYQ=Y,那么它要占用一个消息队列
所以一个TUXEDO应用系统需要的最大消息队列为:
Number of Queues = (MAXACCESSERS + Number of Servers with Reply Queues +
Number of MSSQ Sets - Number of Servers in MSSQ Sets)
与消息队列有关的操作系统核心参数必须满足:
1. 消息队列的个数要足够多,能够满足系统的最大需求
2. 消息的大小必须能满���系统可能出现的最大的消息的大小
3. 消息队列的长度要足够长,能容纳下较多的消息个数,使入对操作不用等待或不用等太长
的时间
与消息队列有关的操作系统核心参数有:
MSGMNI (number of unique message queue identifiers)
MSGMAP (size of control map to manage message segments)
MSGMAX (maximum message size)
MSGMNB (maximum message queue length)
MSGSSZ (size of a message segment)
MSGTQL (number of outstanding messages)
MSGSEG (number of message segments in the system)
TUXEDO把整个应用系统的配置信息放到共享内存中,一个TUXEDO应用系统所需要的共享内存由以下参数及配置决定:
1. MAXSERVERS,MAXSERVICE,MAXGTT的值
2. *ROUTING,*GROUP,*NETWORK节的大小
与共享内存有关的操作核心参数有:
SHMMAX (maximum shared memory segment size)
SHMSEG (maximum number of shared memory segments per process)
SHMMNI (maximum number of shared memory identifiers in the system)
SHMMIN(maximum shared memory segment size) 一般要设为1
一个TUXEDO应用系统在运行时所需要的IPC资源的计算
一个TUXEDO应用系统在运行时所需要的IPC资源可用tmboot -c 计算出来.如UBBCONFIG的内容为:
*RESOURCES
IPCKEY 123456
DOMAINID simpapp
MASTER simple
MAXACCESSERS 100
MAXSERVERS 50
MAXSERVICES 100
MODEL SHM
*MACHINES
MYSERVER LMID=simple
APPDIR="d:\tuxdemo\conn"
TUXCONFIG="d:\tuxdemo\conn\tuxconfig"
TUXDIR="d:\tuxedo65"
MAXWSCLIENTS=5
*GROUPS
GROUP1
LMID=simple GRPNO=1
GROUP2
LMID=simple GRPNO=11
*SERVERS
DEFAULT:
CLOPT="-A"
call SRVGRP=GROUP1 SRVID=2
conn SRVGRP=GROUP2 SRVID=12 CONV=Y
WSL SRVGRP=GROUP1 SRVID=1116
CLOPT="-A -- -n //XCJ:8888 -m 2 -M 5 -x 6"
*SERVICES
TOUPPER
以上的配置所需要的IPC资源可用tmboot -c计算出,结果如下,可根据计算结果调整操作系统的核心参数.
D:\tuxdemo\conn>tmboot -c -y
Ipc sizing (minimum /T values only) ...
Fixed Minimums Per Processor
SHMMIN: 1
SHMALL: 1
SEMMAP: SEMMNI
Variable Minimums Per Processor
SEMUME, A SHMMAX
SEMMNU, * *
Node SEMMNS SEMMSL SEMMSL SEMMNI MSGMNI MSGMAP SHMSEG
------ ------ ------ ------ ------ ------ ------ ------
XCJ 120 15 115 A + 1 25 50 180K
where 1 <= A <= 8.
The number of expected application clients per processor should
be added to each MSGMNI value.
从输出可知道:
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(maximum file size)
TUXEDO用户所能创建的最大文件,应考虑创建的SERVER文件的可能大小及ULOG的大小,一个应为ULIMIT.
MAXUP(maximum number of processes per user)
TUXEDO用户所能创建的最大进程数,应设的足够大
IPC资源不够时的出错信息
如果ULOG中出现类似下面的错误,那么就是操作系统的核心参数值或操作系统的资源不够,应进行调整
Clients cannot log into BEA TUXEDO, receive error messages at tpinit:
no space in Bulletin Board
can't register; table full
system init function failed
Global transaction fails, client or server reports failure message
New servers or WSH cannot be started by BEA TUXEDO as needed, error in log file
Message queues become clogged or inaccessible
Write access errors, file system or disk is full
操作系统核心参数的调整方法
不同操作系统,核心参数的调整方法都不太一样,一般由系统管理员来进行调整.这里不作介绍.在UNIX系统中,只要ROOT用户才能对系统的核心参数进行调整.并且一般要重新启动系统所做的调整才能生效.在调整之前最好对原来的参数做一个备份.
SOLARISE系统核心参数的调整
SOLARISE系统的核心参数保存在文件/etc/system中,可直接对它进行编辑
右边为添加的说明.
#与共享内存有关的核心参数
set shmsys:shminfo_shmmax = 4967295 #Maximum shared memory segment size in bytes.
set shmsys:shminfo_shmmin = 1 #
set shmsys:shminfo_shmmni = 100 #
set shmsys:shminfo_shmseg = 10 # Maximum number of shared memory
#segments per process. The maximum amount of
#shared memory in bytes to which a process can
#attach is SHMMAX *SHMSEG.
#与消息队列有关的核心参数
set msgsys:msginfo_msgmni = 600 #Number of unique message queue identifiers.
set msgsys:msginfo_msgmax = 10240 #Maximum message size in bytes.
set msgsys:msginfo_msgmnb = 6600000 #Maximum message queue length in bytes.
set msgsys:msginfo_msgmap = 1200 #(2*msgmni) Number of entries in the control
#map used to manage message segments.
set msgsys:msginfo_msgseg = 1200 #(2*msgmni) Number of message segments in the
#system.
*set msgsys:msginfo_msgtql = 400
#与信号灯有关的核心参数
set semsys:seminfo_semmns = 600 #Maximum number of semaphores in the system.
set semsys:seminfo_semmni = 100 =semmns #Maximum number of active semaphore sets.
set semsys:seminfo_semmsl = 600 =semmns #Maximum number of semaphores per
#semaphore set.
set semsys:seminfo_semmap = 600 =semmni
set semsys:seminfo_semume = 1
set semsys:seminfo_semmnu = 600 >semmns
也可以在SOLARISE的图形化管理界面中进行配置.