您好,欢迎来到小侦探旅游网。
搜索
您的当前位置:首页配置操作系统核心参数

配置操作系统核心参数

来源:小侦探旅游网
配置操作系统核⼼参数

⼀、配置操作系统核⼼参数

First of All ———设置合理的操作系统核⼼参数!!

# ⽤tmunloadcf > generated.ubb 可以得出⽬前配置得UBB⽂件所有得参数值(没有设置的有缺省值)# ⽤tmloadcf –c或tmboot –c可以计算出当前UBB配置的Tuxedo启动最少要占⽤的系统IPC资源。Ipc sizing (minimum /T values only) ...Fixed Minimums Per ProcessorSHMMIN: 1SHMALL: 1SEMMAP: SEMMNI

Variable Minimums Per ProcessorSEMUME, A SHMMAXSEMMNU, * *

Node SEMMNS SEMMSL SEMMSL SEMMNI MSGMNI MSGMAP SHMSEG------ ------ ------ ------ ------ ------ ------ ------KF_FENGM 65 8 60 A + 1 37 74 220Kwhere 1 <= A <= 8.

⼆、BEA Tuxedo配置⽂件UBBCONFIG

UBB配置⽂件分成*RESOURCES,*GROUP,*SERVER,*SERVICE,*NETWORK等若⼲节。DEFAULT表⽰该节中所有对象共有的缺省属性。*RESOURCES

#RESOUCES节提供整个系统的基本参数。IPCKEY 55555 (32767-262143)#进⾏IPC通讯的key值DOMAINID unicom#DOMAIN的ID值

MASTER unicom1,unicom2

#指定DOMAIN中的管理主机为unicom1,运⾏过程中unicom1若出现问题,管理主机切换⾄unicom2MAXACCESSERS 1000

#这⾥该值表⽰整个系统中单个机器上可以访问TUXEDO的最多的Client和Server的总数(可以访问 BBL的最⼤进程数),应⼤于license⽤户数+server 数(副本应记⼊)。该字段会被MACHINE部分的MAXACCESSERS覆盖。

#系统核⼼参数中SEMAPHORE的数⽬(SEMMNS)要⼤于这⾥的MAXACCESSERS数⽬,⽽ipc消息个数(MSGMAX)应⼤于MAXACCESSERS数+所有带REPLYQ的SERVER的个数。MAXSERVERS 80

#最⼤的server数(副本应记⼊)MAXSERVICES 200

#最⼤的service数(多个server重复记⼊)MAXGTT 20

#系统最多的并发的全局交易数⽬MODEL MP

#表⽰cluster⽅式,否则为SHMOPTIONS LAN,MIGRATE

#多机cluster⽅式时必须指定为LAN⽅式,MIGRATE表⽰可以以组为单位进⾏机器间SERVER的迁移。LDBAL Y#允许负载均衡SCANUNIT 10

#SCANUNIT 是BBL在所有服务请求中定期扫描以寻找超时的交易和被阻塞的调⽤的间隔时间(秒)。这个参数指定BBL扫描间隔时间的基本单位,它会影响

在tpbegin中指定的交易超时时间和⽤BLOCKTIME指定的请求阻塞超时时间的精确程度。SANITYSCAN, BBLQUERY,

DBBLWAIT, BLOCKTIME等参数都是SCANUNIT的倍数,⽽不是实际秒数。⽽作为时间单位SCANUNIT必须是5的倍数,并且满⾜0

SANITYSCAN 12

#SANITYSCAN的值指定在每个MACHINE上BBL⾃动检测所有进程的时间间隔,以SCANUNIT为单元。缺省值满⾜(SCANUNIT*SANITYSCAN)约为120秒。DBBLWAIT 2

#DBBLWAIT的值指定DBBL扫描BBL时等待所有BBL应答的最⼤时间,以SCANUNIT为单元,即超过

DBBLWAIT*SCANUNIT(秒)就超时。每⼀次DBBL将请求转发给它的BBL时,BBL会在请求返回结果之前先回复⼀个肯定的应答。这样可以定时检测死掉或不正常的BBL。缺省值满⾜(SCANUNIT*DBBLWAIT)的值等于SCANUNIT和20秒两者之间的最⼤者。BBLQUERY 30

#BBLQUERY指定DBBL对所有BBL进⾏状态检查的时间间隔,它也是以SCANUNIT 为计算单位。如果DBBL的状态询问没有回答,该BBL就被‘隔离’了。缺省值满⾜(SCANUNIT * BBLQUERY) 约为 300秒。BLOCKTIME 6

#BLOCKTIME指定在阻塞队列中的被阻塞请求的超时时间(包括客户端从tpinit 到tpterm的等待时间),以SCANUNIT为计算单位。缺省值满⾜(SCANUNIT * BLOCKTIME) 约为60秒。*MACHINESDEFAULT:

#该部分对各主机进⾏描述。unicom2 LMID=unicom2

APPDIR=\"/usr/tuxedo/apps/simpapp\"

TUXCONFIG=\"/usr/tuxedo/apps/simpapp/tuxconfig\"TUXDIR=\"/usr/tuxedo\"UID=17

MAXACCESSERS=100unicom1 LMID=unicom1

APPDIR=\"/usr/tuxedo/apps/simpapp\"

TUXCONFIG=\"/usr/tuxedo/apps/simpapp/tuxconfig\"TUXDIR=\"/usr/tuxedo\"UID=17GID=26

MAXWSCLIENTS=50

#unicom2, unicom1为⽹络主机名⽤hostname获得。

#LMID:Logical Machines ID 为tuxedo对主机的内部逻辑命名。#APPDIR要求放置SERVER的可执⾏⽂件。

#TUXCONFIG为全路径的⼆进制配置⽂件,要求和环境变量TUXCONFIG相同。对于master机tuxconfig⽂件是由tmloadcf⽣成的,⽽⾮master机则是由tmboot启动后由tlisten从master机上拷贝获得。#TUXDIR为tuxedo安装⽬录,要求和环境变量TUXDIR相同。#MAXWSCLIENTS表⽰可连接client的最⼤个数。*GROUPS

#GROUP1为组名,LMID表⽰该组运⾏的主机,GRPNO为组号,OPENINFO为该组通过XA打开RM(通常指数据库)的初始串。

GROUP1 LMID=unicom2 GRPNO=1 OPENINFO=NONEGROUP2 LMID=unicom3 GRPNO=2 OPENINFO=NONE*SERVERS

#这⾥描述应⽤服务器。SRVGRP的该SERVER所属组名,SRVID为服务器ID号,MIN表⽰该服务器CLOPT提供运⾏的相关参数,要求是”-A -- ….”,可以在应⽤服务器的srvinit函数中获得这些参数。CLOPT=\"-A\"

BillServer SRVGRP=GROUP1 SRVID=1 MIN=2 MAX=4RQADDR=QNAME REPLYQ=YCLOPT=\"-A -o ./out.log –r -e ./err.log ---p [L][low_water][,[terminate_time]][:[high_water][,create_time]]

如果MAX>1,并且使⽤了MSSQ(RQADDR, RQPERM)的Server可以配置-p来控制进程的增加和减少。控制算法如下:如果请求队列中的请求个数⼤于high_water后超过create_time秒,就增加该服务的⼀个新进程;如果请求队列中的请求个数⼩于low_water后超过terminate_time秒, 就停⽌该服务的⼀个进程。low_water缺省是平均每个服务进程有⼀个请求消息或者workload 50;high_water缺省是平均每个服务进程有两个请求消息或者workload 100。create_time缺省最⼩是50秒, andterminate_time缺省最⼩是60秒。注意:

使⽤TUXEDO的服务进程池时,⽤户⾃⼰在程序中如果⽤alarm()等系统调⽤来停⽌进程是不起作⽤的,但也不会报错。[L] 标记意味着增减服务进程基于负载⽽不是请求队列的长度。仅⽤于SHM模式下并且LDBAL=Y,否则会报错(LIBTUX_CAT:12) ,服务进程也不会增减。WSL SRVGRP=GROUP2 SRVID=1

CLOPT=\"-A -- -n //130.36.0.103:88 -m 3 -M 10 -x 10 -T 10\"

#WSL⽤于和client端进⾏连接。-n 表⽰出接⼊点为IP:PORT⽅式,-m –M 表⽰最⼩和最⼤启动多少个WSH和前端通讯,-x则表⽰⼀个WSH和⼏个client 端连接。-T 10表⽰如果client端和server连接后10分钟内没有交易请求则关闭连接。

*SERVICES

#不要求将所有的service在这⾥描述,当某个service有特别参数时才在SERVICE节中说明。TOUPPER

LOAD=60 // 负载,当LDBAL=Y时有⽤PRIO=80 // 服务在请求队列中的优先级TRANSTIME=120 // 交易时间SVCTIMEOUT=600 // 服务超时时间*NETWORK

#NETWORK节对多机之间如何进⾏⽹络连接进⾏描述。

#cluster⽅式下要求先启动tlisten。事实上,对于⾮master机启动应⽤服务器是由tlisten完成的。#tlisten的启动⽅式为

#unicom1: tlisten –l //130.36.1.101:81#unicom2: tlisten –l //130.36.0.102:81#NADDR指定⽹络连接的接⼊点。#NLSADDR则指定tlisten的接⼊点。#BRIDGE则指TCP连接所⽤的设备⽂件。三、BEA Tuxedo常见配置错误

BEA Tuxedo服务启动时可能遇到的问题:1、服务启动时报错”No space in Bulletin Board”

增加ubb⽂件中的MAXACCESSERS值和MAXSERVERS

2、Tuxedo应⽤程序在初始化时失败:‖Application server failed or dumped core during initialization”重新编译连接。

3、Tuxedo应⽤程序可执⾏⽂件没找到或⽆法运⾏: ―Application server file not found or not executable”4、server group的⾃动迁移Automatic migration of server group5、缺省的启动顺序可能不是最佳的Default boot sequence may not be optimal6、环境变量没有设置或设置不正确

Environment variable not set or not set properly7、IPCKEY以被使⽤:”IPCKEY is already in use”将ubb⽂件中的IPCKEY改成另⼀个值。

8、⽆效NETADDRESSS 。Invalid network address9、Met upper bound limits specified in the UBBCONFIG file10、Network port 被占⽤ Network port is in use already11、达到系统资源的 Reached limit on system resources

12、Server boot dependency

13、没有建⽴TLOG⽂件。TLOG file is not createdBEA Tuxedo服务shutdown时可能遇到的问题:1、 Clients still attached 。客户端仍然保持连接2、Dead servers。应⽤服务程序Dead3、Shutdown sequence四、BEA Tuxedo常⽤命令

buildclient:BEA Tuxedo Client端应⽤程序编译命令

buildclient [ -C ] [ -v ] [ {-r rmname | -w } ] [ -o name] [ -f firstfiles] [ -l lastfiles]说明:

-C specifies COBOL compilation.COBOL语⾔的编译⽅式

-v specifies that buildclient should work in verbose mode. In particular, it writes the compilation command to its standardoutput.

Buildclient 的编译信息详细的输出到标准输出设备

-w specifies that the client is to be built using the workstation libraries.指出Client程序编译时连接Workstation 相应的动态库

-r rmname specifies the resource manager associated with this client.-o 输出⽂件名

-f 输⼊⽂件名称,⼀个或多个,多个以-f 分离

-l specifies one or more user files to be included in the compilation and link edit phases of buildclient last,after the BEA Tuxedo libraries.

需要连接的⾮BEA Tuxedo的动态库,可以为多个,多个时以-l 分离buildtms(transaction manager server):buildserver:

● tmboot—activates the application that is referenced in the specified configuration file. Depending on theoptions used, the entire application or parts of the application are started.● tmloadcf—parses the UBBCONFIG file and loads thebinary TUXCONFIGconfiguration file.

● tmunloadcf—unloads the TUXCONFIG configuration file.

● tmconfig—dynamically updates and retrieves information about theconfiguration for a running system.

● dmadmin—updates the compiled DMCONFIG (binary domain configuration file) while the system is running.● tmadmin—produces information about configuration parameters. Once invoked, you can enter many

administrative commands that duplicate the functions of other commands. For example, the tmadmin shutdown command isidentical to the tmshutdown command.

tmshutdown—shuts down a set of specified BEA WebLogic Enterprise or BEA Tuxedo servers, or removes a set of BEAWebLogic Enterprise interfaces or BEA Tuxedo services listed in a configuration file.

单个启动或关闭服务器:

要动态的启动指定的服务器必须先启动BBL服务,JSL服务,JREPSVR服务!具体做法如下:tmloadcf ubbsimpletmadmin

>boot -B simple (simple为ubbsimple中指定的MASTER,注意B⼤写!)或

>boot -M (单独启动BBL服务)

>boot -i 11 (11为ubbsimpel中定义的JSL的SRVID)BBL服务和JSL服务均成功启动后,可以启动wlserver。wlserver启动之后,⾸先启动JREPSVR服务,如下:

>boot -i 111 (111为ubbsimpel中定义的JREPSVR的SRVID)再启动⽤户⾃⼰定义的服务,如下:

>boot -i 1 (1为ubbsimpel中定义的simpserv的SRVID)关闭指定服务器:

>shutdown -i 1 (1为ubbsimpel中定义的simpserv的SRVID)

通过以上⽅法,可以动态加载服务器,⽽不需要把整个Tuxedo服务重启!五、常⽤BEA Tuxedo函数:(⼀) 数据操作函数说明:

在BEA Tuxedo的数据操作过程中(与数据库中数据交互,与客户端数据交互),由于⼀般交互的数据较多,因此⼀般采⽤BEA Tuxedo的FML 数据类型进⾏数据传输。FML(Field Modification Language )类似于Oracle 数据库中的⼀

个表,它可以象表⼀样存放⼀个Field 的多个值,⽽且对于同⼀个FML定义中的Field ,其值的个数是可以不相同的,主要根据⽤户的输⼊值⽽定。

FML类型有两种⼤⼩,通常的FML 是基于16位数据接⼝的。对于FML16位接⼝,最多只能有8192个不同的字段,每个字段值的最⼤的Buffer Size 为K。

第⼆种是基于32位数据接⼝的,它允许30 millions 的Fields ,每个Field 允许20 billions Bytes。

FML Buffers:⼀个Field Buffer是由Field id,name,field type,field length组成的,其定义如下所⽰,其中*base 10050是指对于每⼀个Field 其field identifier的取值的偏移量,它决定每⼀个Field 在Buffer中的相对地址。定义:*base 10050

# name number type flags commentsname :字段名称

number::每个字段在FML Buffer中的相对位置,决定各字段的地址指针type:字段数据类型flags :暂时未⽤Comments :注释

在定义字段时,注意*base value 中Value值的定义,⾸先参照上表定义,

其次注意,在⾃定义字段时,地址的不可重⽤性。如果地址重⽤,将会出现同⼀地址的字段,有的字段的值取不到。头⽂件:#include#include主要函数:

说明:以上函数中,其中带32的函数表⽰是应⽤于FML32的函数。详细描述:1、Fadd,Fadd32:向字段中添加新的值函数原形:#include stdio.h>#include \"fml.h\"

int Fadd(FBFR * fbfr, FLDID fieldid, char * value, FLDLEN len)#include \"fml32.h\"

int Fadd32(FBFR32 * fbfr, FLDID32 fieldid, char *value, FLDLEN32 len) 参数说明:FBFR32 * fbfr : a pointer to a given field buffer 指定FML Buffer的指针FLDID32 fieldid:指定的字段Field的名称(区分⼤⼩写)或ID (field identifier)注意该值如果是字段的名称,不能以变量的形式给出,只能是字段名称的字符串。

char *value:与Buffer定义中该字段相同内容的对象的指针FLDLEN32 len:数据的长度,⼀般给NULLReturn value :如果操作错误返回–1

2、Falloc,Falloc32:Field Buffer 分配空间并初始化

调⽤malloc给FML Buffer动态的分配空间,同时调⽤Finit进⾏初始化函数原形:#include#include \"fml.h\"

FBFR * Falloc(FLDOCC F, FLDLEN V)#include \"fml32.h\"

FBFR32 * Falloc32(FLDOCC32 F, FLDLEN32 V)参数说明:

F:The numbers of fieldsV:The bytes of the value space

Return value:如果成功返回指针,否则返回NULL3、Fappend,Fappend32:向Buffer中指定字段追加新值

函数原形:#include#include \"fml.h\"

int Fappend(FBFR * fbfr, FLDID fieldid, char * valu e, FLDLEN len)#include \"fml32.h\"

int Fappend32(FBFR32 * fbfr, FLDID32 fieldi d, char * valu e, FLDLEN32 len)参数说明:

fbfr : a pointer to a given field buffer 指定FML Buffer的指针fieldid:指定的字段Field的名称(区分⼤⼩写)或ID (field identifier)char *value:与Buffer定义中该字段相同内容的对象的指针len:数据的长度,⼀般给NULLReturn value :如果操作错误返回–1

4、Fchg,Fchg32:修改指定Buffer 中指定字段的指定序列的值函数原形:#include#include \"fml.h\"

int Fchg(FBFR * fbfr, FLDID fieldid, FLDOCC oc, char * value, FLDLEN le n)#include \"fml32.h\"

int Fchg32(FBFR32 *fbf r, FLDID32 fieldid, FLDOCC32 oc, char * value, FLDLEN32 len)参数说明:

fbfr : a pointer to a given field buffer 指定FML Buffer的指针fieldid:指定的字段Field的名称(区分⼤⼩写)或ID (field identifier)oc:Buffer中该字段的值的序列

oc 表⽰该字段值的⼀个序列,如果该序列不存在,则添加⼀个NULL值如果为–1,则以⼀个新的序列向Buffer中追加⼀个新值

char *value:与Buffer定义中该字段相同内容的对象的指针,在这⾥为新增值的指针len:数据的长度,⼀般给0

Return value :如果操作错误返回–15、Fcpy,Fcpy32:FML Buffer的相互拷贝函数原形:#include#include \"fml.h\"

int Fcpy(FBFR * dest, FBFR * src)#include \"fml32.h\"

int Fcpy32(FBFR32 *dest, FBFR32 * sr c)

参数说明:

dest:destination fielded buffers ⽬标Buffersrc: source fielded buffers 源数据BufferReturn value :如果操作错误返回–1

6、Fdel,Fdel32:删除Buffer中指定字段的指定的⼀个值函数原形:#include stdio.h>#include \"fml.h\"

int Fdel(FBFR *fbfr, FLDID fieldid, FLDOCC oc)#include \"fml32.h\"

int Fdel32(FBFR32 * fbfr, FLDID32 fieldi d, FLDOCC32 oc)参数说明:

fbfr :a pointer to a given Field Buffer ,指定Buffer的数据指针fieldid:指定字段的field identifier 可以为字段的名称或ID oc:删除值的序列号

Return value :如果操作错误返回–1

7、Fdelall,Fdelall32:删除Buffer中指定字段的所有值函数原形:#include#include \"fml.h\"

int Fdelall(FBFR * fbfr, FLDID fieldid)#include \"fml32.h\"

int Fdelall32(FBFR32 * fbfr, FLDID32 fieldi d)参数说明:

fbfr:a pointer to a given Field Buffer ,指定Buffer的数据指针fieldid:指定字段的field identifier 可以为字段的名称或IDReturn value :如果操作错误返回–1

8、Fdelete,Fdelete32:删除指定Buffer中⼀组field的所有值函数原形:#include#include \"fml.h\"

int Fdelete(FBFR * fbfr, FLDID *fieldid)#include \"fml32.h\"

int Fdelete32(FBFR32 * fbfr, FLDID32 * fieldi d)参数说明:

fbfr:a pointer to a given Field Buffer ,指定Buffer的数据指针fieldid:a pointer to an array of field identifiers.Return value :如果操作错误返回–1

附:数组的声明:FLDID field[2]; FLDID32 field[2]9、Ffind,Ffind32:在 buffer 中查找指定字段的指定值

函数原形:#include#include \"fml.h\"

char * Ffind(FBFR * fbfr, FLDID fieldid, FLDOCC oc, FLDLEN * len)#include \"fml32.h\"

char * Ffind32(FBFR32 * fbfr, FLDID32 fieldi d, FLDOCC32 oc, FLDLEN32 * len) 参数说明:fbfr :a pointer to a given Field Buffer ,指定Buffer的数据指针fieldid:指定字段的field identifier 可以为字段的名称或IDoc:值的序列号len:数据的长度

Return value :points to an object that has the same type as the field type10、Ffindlast,Ffindlast32:在 buffer 中查找指定字段的最后⼀个值函数原形:#include#include \"fml.h\"

char * Ffindlast(FBFR * fbfr, FLDID fieldid, FLDOCC * oc, FLDLEN * len)#include \"fml32.h\"

char * Ffindlast32(FBFR32 *fbfr, FLDID32 fieldi d, FLDOCC32 * oc, FLDLEN32 * len)参数说明:

fbfr :a pointer to a given Field Buffer ,指定Buffer的数据指针fieldid:指定字段的field identifier 可以为字段的名称或ID

oc:an integer that is used to receive the occurrence number of the field.len:数据的长度

Return value :points to an object that has the same type as the field type 11、Ffprint,Ffprint32:打印指定Buffer的值到Stream函数原形:#include#include \"fml.h\"

int Ffprint(FBFR * fbfr, FILE * iop)#include \"fml32.h\"

int Ffprint32(FBFR32 * fbfr, FILE *iop)参数说明:

fbfr:a pointer to a given Field Buffer ,指定Buffer的数据指针

iop:输出⽂件流 a pointer of type FILE that points to the output stream. Return value :如果操作错误返回–112、Fprint,Fprint32:打印指定Buffer的内容到标准输出设备函数原形:

#include#include \"fml.h\"int Fprint(FBFR * fbfr)#include \"fml32.h\"int Fprint32(FBFR32 * fbfr)参数说明:

fbfr:a pointer to a given Field Buffer ,指定Buffer的数据指针Return value:如果操作错误返回–113、Ffree,Ffree32:释放Buffer占⽤的空间函数原形:#include#include \"fml.h\"int Ffree(FBFR * fbfr)#include \"fml32.h\"int Ffree32(FBFR32 * fbfr)参数说明:

fbfr:a pointer to a fielded bufferReturn value :如果操作错误返回–1

14、Fget,Fget32:从指定的Buffer取得指定Field的指定值函数原形:#include#include \"fml.h\"

int Fget(FBFR *fbfr, FLDID fieldid, FLDOCC oc, char * value, FLDLEN* maxle n) #include \"fml32.h\"int Fget32(FBFR32 * fbf r, FLDID32 fieldid, FLDOCC32 oc, char *value,FLDLEN32 * maxlen)参数说明:

fbfr : a pointer to a given field buffer 指定FML Buffer的指针fieldid:指定的字段Field的名称(区分⼤⼩写)或ID (field identifier)oc:Buffer中该字段的值的序列

char *value:与Buffer定义中该字段相同内容的对象的指针maxlen:数据的长度,可以为NULLReturn value :如果操作错误返回–1

15、Fgetlast,Fgetlast32:Get 指定Buffer中指定字段的最后⼀个occurrence的值函数原形:#include#include \"fml.h\"

int Fgetlast(FBFR * fbfr, FLDID fieldid, FLDOCC * oc, char * value, FLDLEN* maxle n)#include \"fml32.h\"

int Fgetlast32(FBFR32 * fbfr, FLDID32 fieldi d, FLDOCC32*oc,char*valu e,FLDLEN32*maxlen)参数说明:

fbfr : a pointer to a given field buffer 指定FML Buffer的指针

fieldid:指定的字段Field的名称(区分⼤⼩写)或ID (field identifier) oc:Buffer中该字段的值的序列char *value:与Buffer定义中该字段相同内容的对象的指针maxlen:数据的长度,可以为NULLReturn value :如果操作错误返回–1

16、Fldid,Fldid32:根据 field name取得 field identifier函数原形:#include#include \"fml.h\"

FLDID Fldid(char * name)#include \"fml32.h\"

FLDID32 Fldid32(char * name)参数说明:name:字段的名称

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

Copyright © 2019- xiaozhentang.com 版权所有 湘ICP备2023022495号-4

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务