[转帖]Unix下Tuxedo研究_MQ, Tuxedo及OLTP讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MQ, Tuxedo及OLTP讨论区 »
总帖数
2
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3630 | 回复: 1   主题: [转帖]Unix下Tuxedo研究        下一篇 
cc
注册用户
等级:中校
经验:1900
发帖:195
精华:0
注册:2011-7-25
状态:离线
发送短消息息给cc 加好友    发送短消息息给cc 发消息
发表于: IP:您无权察看 2014-10-20 11:00:28 | [全部帖] [楼主帖] 楼主

1.unname -n 查看主机名称 在网络中设置。默认localhost.localdomain

2.tmboot -y 启动tuxedo application

3.BBL(Bulletin Board Liaison) 是tuxedo的一个管理服务进程,administrative process,在启动tuxedo时首先启动这个进程

3. 启动时,标准输出:exec simpserv  - A  -A参数表示把server中所有的service注册到BBL。在UBBCONFIG中表示:CLOPT=”-A“

4. psr/printserver命令:to get information about servers
   psc/printservice命令:to get information about services

5. tuxedo 配置文件一共有八个节
*RESOURCES domain级别的。system-wide information 跨机器的。包含全局的参数。
三个必要参数:(1) IPCKEY 标识系统IPC资源,
   值范围:32769~262142
                     (2) MASTER logical machine name(LMID) 多个计算机相连起管理作用的主机的名称(带有启动和关闭角色的主机)
          (3) MODEL 模式,一个机器single(SHM) 或 集群multiple machine(MP)
其他参数
MAXACCESSERS    10 同时允许访问BB共享内存块数 1~32768
MAXSERVERS      5  最大的进程数 1~8192
MAXSERVICES     10   最大的服务数 1~32768
SCANUNIT  BBL进程要周期的验证BB共享内存块中的内容,是否有损坏。此参数表示:扫描的基本单位,必须是5的倍数,单位是秒。
SANITYSCAN 真正的扫描时间,例如设置为3,那么实际饿扫描参数就为3*SCANUNIT 不可大于300秒
BLOCKTIME 设定超时时间,如发包的超时时间 如果为1 1*SCANUMIT 就是可实际超时的参数< 32767

*MACHINES 配置本机机器

LMID  logical machine name


TUXCONFIG tuxconfig配置文件目录及名称
TUXDIR tuxedo根目录
APPDIR server程序目录

*GROUPS SERVERS的分组,便于管理

LMID


GRPNO 组ID
例如:

 APP_GRP1 LMID=SITE1 GRPNO=2
*SERVERS


SRVGRP: SERVER所属组
SRVID: SERVER的id,不同组的SERVERID可以相同
CLOPT: Command Line Options Parameter,向server里传递参数(因为server没有Main函数)。CLOP = "<left>--<right>" left内容是提供给tuxedo来解析的。right用来供用户解析的。
-A 把所有services都注册到BB中。
-e file 把标准错误信息输出到文件
-o file把标准输出重定向到l文件中
-t  多线程的支持。还需要在CONFIG中SERVER配置MINDISPATCHTHREADS和MAXDISPATCHTHREADS 最小线程数和最大线程数
-P[L] Min-Max设置增减生效
  L标记意味着增减服务进程基于负载而不是请求队列的长度,仅用于SHM模式并且LDBAL=Y,否则报错(LIBTUX_CAT:1542)
-r tuxedo有个性能工具txrpt,可以统计每个服务SERVICE在某段特定时间内所处理的请求的总数及平均处理时间。
txrpt [-t] [-n names] [-d mm/dd] [-s time] [-e time]
参数说明:
-t
对输出进行排序,总计处理请求所花的时间越多的排的越靠前.如果不指定,按总
计被调用的次数越多的排的越靠前.
-n names
只输出指定名称的SERVICE的统计信息,如果有多个,可用,隔开.
-d mm/dd
限定日期,统计指定日期的信息. 缺省为当前日期.
-s time
指定统计开始时间:格式为:hr[:min[:sec]].
-e time
指定统计结束时间:格式为:hr[:min[:sec]]
-s 服务。
还有很多,待查
出现错误时,重启参数:
RESTART=Y
GRACE=0 设置启动间隔,0为无限次启动,但是不推荐的。
MAXGEN=10 在规定的时间内最多多少条命,缺省时1,最大是256
RCMD 任何的可执行文件或脚本在重启这个服务时被执行。比如发个邮件的程序。发个短信的程序。

例如: meserver SRVGRP=site1 SRVID =10 MIN=5 MAX=20 (开始启动5个,CLOPT设置-p参数,就会自动扩展到20个)

*SERVICES 服务

----------------------------------单机系统以上5部分就够了
*ROUTING
*NETGROUPS
*NETWORK

6.UBBCONFIG中可以使用关键字 DEFAULT 参数定义一些缺省值。

7. buildserver -f 源文件 -o 可执行文件 -s services s1:s2 ( ”:”后为服务别名。)

8。查看环境变量

9JOLT
添加服务。报错getkeys ,是因为很多原因,比如BBL共享内存不足。允许访问的客户端限制少了。等。
java bea.jolt.admin.jbld //192.168.0.88:2140 services.rep

10  FML

mkfldhdr32 fml文件
1生成个头文件用于服务和客户端引用
2.添加fml文件名称及路径为环境变量

Ferror32
这个全局整型的变量是用来设置当FML32函数返回-1失败的时候的错误代码。

Fstrerror32(string)
这个函数是用来根据错误代码返回错误信息的。

使用tpalloc()来分配一个FML32缓冲区,(FML32 没有子类型)
FBFR32 *fml32_buffer;
tpalloc("FML32",NULL,"buffer_size_required);
第三个参数,缓冲区可以去评估一下,也可以用下面的函数

long Fneeded32(FLDOCCD32 F,FLDLEN32 V)
F: 要使用的域(字段)的个数
V: 所有域(字段)需要的大小,取大小可用sizeof()函数。

下面看一个分配Buffer Allocation的例子

#include<fml32.h>
...
long need;
long balance; //字段1
char acct[20];//字段2
fldlen = sizeof(long) + sizeof(acct);
need = Fneeded32(2,fldlen);
fbuf = (FBFR32 *) tpalloc("FML32",NULL,need);
if(fbuf == NULL){
.....}
....
int Fadd32(FBFR32 *fbfr,FLDID32 fieldid,char* value,FLDLEN32 len)


向缓冲区中添加字段。如果这个缓冲区的某个域已经存在数据,则按照从0开始递增的方式增加数据。
参数
fbfr 指向一个缓冲区的指针
fieldid 添加字段的ID
value char * 字符串(字段内容)
len FML32下设置为0
例子:

long acct_id;
char *name;
......
if(Fadd32(reqfb,ACCOUNT_ID,(char *)&acct_id,(FLDLEN32)0) == -1)
{
      fprintf(stderr,"Fadd32 failed with error :%s/n",Fstrerror32(Ferror));
}
if(Fadd32(reqfb,SAMOUNT,name,(FLDLEN32)0) == -1)
{
      printf("Fadd32 failed with error: %d/n",Ferror);
}
....
int Fget32(FBFR *fbfr, FLDID32 fieldid,int occ,char *value,FLDLEN32 *MaxLen);


 参数:
fbfr 指向欲得到域值的缓冲区
fldid 从缓冲区去域值的ID
value 从缓冲区返回的数据。
maxlen 设置了从缓冲区拷出的最大字符数量。

occ

所在域中的位置标示,(从0开始排序)
例子:
FLDLEN32 len2;
char name[20];
long amount;
...
len2=sizeof(name);
if ((Fget32(buf32,NAME,0,name,&len2)) == -1)
{
 ....
}
len2= sizeof(amount);
if(( Fget32(buf32, AMOUNT,3,(char *)&amount,&len)) == -1)
{
...
}

int Fchg32(FBFR32 *fbfr, FLDID32 fieldid,FLDOCC32 occ,char* value,FLDLEN32)
改变域中的值
fbfr 指向欲得到域值的缓冲区
fldid 从缓冲区去域值的ID
value 从缓冲区返回的数据。
occ
maxlen 设置了从缓冲区拷出的最大字符数量。
occ 所在域中的位置标示,(从0开始排序)

FLDOCC32 Foccur32( FBFR32 *fbfr,FLDID32 fieldid);
得到域中值的总数量。
fbfr 缓冲区
fieldid 域Id

int Fprint32(FBFR32 *fbfr);

int Ffprintf32(FBFR32 *fbfr, FILE *iop);


用来格式化化输出缓冲区,主要用于调试

--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
koei123
注册用户
等级:大校
经验:4196
发帖:16
精华:0
注册:2011-7-21
状态:离线
发送短消息息给koei123 加好友    发送短消息息给koei123 发消息
发表于: IP:您无权察看 2014-10-20 17:29:45 | [全部帖] [楼主帖] 2  楼

挺不错的 北京联动北方科技有限公司



赞(0)    操作        顶端 
总帖数
2
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论