tuxedo负载均衡和多域测试附件
- 格式:doc
- 大小:121.00 KB
- 文档页数:9
TUXEDO性能调优的基本方法一. 通过配置MSSQ服务器组提高性能在ATMI环境中(TUXEDO-CORBA服务器环境不支持MSSQ机制)可以通过配置MSSQ(多服务器单队列)机制来达到队列级负载均衡的目的。
同一组MSSQ服务器在同一时间将共用一个请求队列,当消息出队时,将被送到第一个空闲的服务器去处理。
如果服务器A属于某个MSSQ的一部分,那么必须为它配置响应队列,即设置REPLYQ=Y,这样当A调用了B服务时,B对A的响应将被回送到发出原始请求的服务器A,而不是MSSQ服务器组中的其它服务器。
MSSQ机制可以配置成动态形式,这样TUXEDO系统会根据负载状况动态地产生和消除MSSQ中的服务器。
在下列情况下,可以考虑配置MSSQ:应该配置MSSQ 不应该配置MSSQ服务器数量在2到12个之间 如果有多个服务器,折衷的办法是使用多个MSSQ请求缓冲区不是很大,没有大到将一个队列占满的情况 一个请求缓冲区可能会占满整个服务器队列空间。
所有的服务器都提供一组相同的服务 每个服务都提供不同的服务需要配置多个服务器进程才能满足客户机对服务器的实时性的要求。
每个MSSQ的服务器数量一般不要超过10个,如果超过10个,建议配置多个MSSQ。
在下面两种情况下,使用MSSQ将达到调优的效果:A.银行业务中,多个TELLER执行相同的服务来为客户提供服务,下一个空闲的TELLER将为下一个等候的客户服务。
在这种情况下,每个TELLER必须能够执行所有的客户服务。
在同一个MSSQ中的服务器必须在任何时候都提供相同的服务。
MSSQ的优点在于,它在队列级提供了第二种形式有的负载均衡。
B.在超市收款业务中,不同的CASHIERS接收不同形式的客户支付(如信用卡,现金等),在这种情况下,不推荐使用MSSQ。
例如:simpserv SRVGRP=GROUP1 SRVID=10 MIN=3 MAX=5RQADDR=simpserv REPLYQ=Y这个配置将启动3个simpserv进程,SVRID依次为10,11,12。
TUXEDO配置参数详解2007-07-10 09:39:47大中小TUXEDO应用系统的配置3.1 TUXEDO应用系统的常见配置配置文件UBBCONFIG介绍一个TUXEDO应用系统的所有资源都在一个文本文件中进行定义,该文件称为UBBCONFIG,在配置完成后,UBBCONFIG被编译成一个二进制的文件TUXCONFIG.在TUXEDO系统启动时,从该文件中读取系统的配置信息。
UBBCONFIG文件类似WINDOWS下的*.INI文件。
它包括以下9大部分, 我们称之为节,RESOURCES,MACHIENS,GROUPS这三个节必须的,其他的节是可选的。
RESOURCES(必需): 与整个系统有关的配置信息MACHINES(必需): 一个TUXEDO应用系统可以跨越多台服务器,在该节中配置与每台服务器有关的信息GROUPS(必需): TUXEDO中的服务可被分为多个组,在该节中配置与组有关的信息SERVERS(可选): 与SERVER有关的信息在该节配置SERVICES(可选): 与SERVICES有关的信息在该节配置NETWORK(可选):与网络有关的信息在该节配置ROUTING(可选) :路由规则在该节配置NETGROUPS(可选):与网络分组有关的信息在该节配置名称解释:TUXEDO应用系统一个TUXEDO应用系统包括服务端,客户端,服务端安装在服务器上,客户端一般安装在PC 机上,从开发角度看,一个TUXEDO应用系统包括服务端程序,客户端程序,一个配置文件。
此外,一个TUXEDO应用系统可以部署在一台服务器上,也可以部署在多台服务器上。
SERVER:服务端程序用C或COBAL编写,每一个程序文件编译成一个相应可执行文件,该可执行文件在运行时称为SERVER,它实际上就是一个进程。
每个SERVER都有一个名字,也就是该进程的名字。
为与TUXEDO应用系统的服务端区分,我们在本书中,我们用SERVER表示该进程,用服务端表示TUXEDO应用系统的服务端。
Tuxedo教程全解contents •Tuxedo概述•Tuxedo核心组件•Tuxedo应用开发•Tuxedo系统部署与配置•Tuxedo性能优化与监控•Tuxedo实战案例解析目录Tuxedo概述Tuxedo定义与特点Tuxedo是一种中间件Tuxedo的特点Tuxedo应用领域金融行业电信行业其他行业Tuxedo发展历程Tuxedo的起源Tuxedo的发展Tuxedo 的未来Tuxedo核心组件ATMI编程接口支持多种编程语言,如提供了事务管理、通信、安全等方面的功能。
Tuxedo服务器123Tuxedo客户端010203Tuxedo管理工具Tuxedo应用开发开发环境搭建安装Tuxedo系统配置环境变量选择开发工具建立项目工程设计服务接口编写服务代码配置服务属性编译和部署服务服务开发流程根据业务需求设计客户端界面,包括输入、输出显示等。
设计客户端界面编写客户端代码配置客户端属性编译和部署客户端使用Tuxedo 提供的API 编写客户端代码,实现与服务端的交互。
在配置文件中配置客户端相关属性,如连接的服务地址、端口等。
使用Tuxedo 提供的编译工具将客户端代码编译成可执行文件,并部署到用户环境中。
客户端开发流程日志调试通过查看Tuxedo系统日志和应用程序日志定位问题原因。
跟踪调试使用Tuxedo提供的跟踪工具对服务调用进行跟踪调试,查看调用过程和结果。
单元测试针对每个服务或函数编写单元测试代码进行测试验证功能正确性。
集成测试将所有服务集成在一起进行测试验证整个系统的功能正确性。
调试与测试方法Tuxedo系统部署与配置系统部署方案单机部署01分布式部署02集群部署03服务器参数配置事务管理配置资源管理配置包括客户端名称、服务器地址、端口号等参数的配置。
客户端参数配置配置客户端事务的提交和回滚方式,确保客户端与服务器之间的事务一致性。
事务管理配置配置客户端的负载均衡策略,实现请求的均匀分配和故障转移。
引言:本文是关于Tuxedo培训教程的第二部分,旨在深入介绍Tuxedo技术的相关知识和应用。
Tuxedo是一种高性能、高可用性的分布式应用服务器,广泛应用于大规模事务处理和企业级应用领域。
本文将分为五个方面对Tuxedo进行详细阐述,帮助读者更好地理解和应用该技术。
正文:一、Tuxedo安装与配置1. Tuxedo系统要求:包括硬件和软件要求,例如操作系统、内存、存储等方面的要求。
2. Tuxedo的安装步骤:详细介绍如何下载、安装和配置Tuxedo软件。
3. Tuxedo的配置文件:包括DOMAINS、UBBCONFIG等配置文件的作用和常用参数设置。
4. Tuxedo的环境变量设置:介绍如何设置Tuxedo相关的环境变量,确保系统能正常运行。
二、Tuxedo应用开发1. Tuxedo编程模型:介绍Tuxedo的编程模型,包括服务(Service)、服务器(Server)和客户端(Client)的概念和作用。
2. Tuxedo事务管理:详细解释Tuxedo事务的概念和使用方法,包括事务的起始、提交和回滚操作。
3. Tuxedo服务开发:介绍如何编写和发布Tuxedo服务,包括服务的注册、发布和请求处理过程。
4. Tuxedo客户端开发:讲解如何编写Tuxedo客户端程序,包括连接Tuxedo服务、发送请求和接收响应等步骤。
5. Tuxedo编程示例:通过实际的编程示例演示Tuxedo应用开发的流程和技巧,帮助读者更好地理解和应用。
三、Tuxedo监控与调优1. Tuxedo监控工具:介绍Tuxedo自带的监控工具,如tmadmin和tmj,用于监控和管理Tuxedo域。
2. Tuxedo性能调优:给出一些Tuxedo性能调优的建议和方法,包括资源配置、线程池设置等方面。
3. Tuxedo故障排查:介绍常见的Tuxedo故障和排查方法,如错误日志分析、日志级别配置等。
4. Tuxedo性能分析:介绍常用的性能分析工具和方法,用于定位和解决Tuxedo应用的性能瓶颈问题。
第二章:TUXEDO简介Tuxedo是BEA公司的交易中间件产品,1984年由贝尔实验室开发成功,1992年易主Novell 公司,1996年由BEA公司收购,经过十多年的不断更新和完善,Tuxedo已经发展成为交易中间件领域事实上的标准。
2.1TUXEDO系统的组成部分BEA TUXEDO是由服务器端的事务管理器、可靠队列服务、应用域以及客户端的工作站等几个核心部分组成的。
下面对这几部分进行介绍。
图TUXEDO核心组成1.事务管理器/T运行于服务器端的事务管理器是TUXEDO体系结构的中心,它是每个TUXEDO服务器的核心,提供重要的分布式应用服务,包括:名字服务、数据路由、负载平衡、配置管理、分布式事务管理和安全性管理。
它包含TUXEDO的核心数据结构公告板BB (Bulletin Board),BB中包括服务名、路由信息、请求服务的队列和负载等基本信息,TUXEDO/T负责访问和维护BB中的信息,并利用这些信息实现其各项功能。
2.工作站/WS工作站把TUXEDO ATMI API((注:ATMI,应用事务管理接口,是支持应用开发的一组函数) 扩展到客户端应用程序中,它适用于DOS、Windows3.1/95/98/2000/XP、Windows NT、IBM OS/2、Macintosh OS和所有商用版的UNIX。
有了工作站,开发者用ATMI客户端的功能可透明访问在TUXEDO分布式环境中任何服务器上的服务。
有了工作站,用户可在常见的编程环境中如:Visual Basic,PowerBuilder,DELPHI,VC等编写TUXEDO的客户端程序。
3.可靠队列服务/QTUXEDO提供了一个简单的可靠的队列机制,保证应用系统提交的请求和数据可在网络故障或目的服务器瘫痪等情况下也能递交到目的服务器。
应用程序能将服务请求入队和出队,并可以设定系统,使队列中的请求自动地转发给 TUXEDO的服务进程,并取回处理结果。
TUXEDO技术详述高速数据甬道TUXEDO提供高速数据甬道,所谓数据甬道,是指能够把前端的大量网络连接汇聚成较少的后端连接并减少数据传送量。
采用数据甬道技术,保证应用系统即使在大量用户同时请求服务的时候,也能够保持快速、稳定的工作状态。
●降低网络负担-关键的联机交易业务系统往往是一个基于广域网的系统,广域网速度远远低于局域网,而联机交易对响应时间又有较高要求,所以网络负担是影响系统成败的一个重要因素。
另外,大量的网上传输从经济上考虑也是不合算的。
TUXEDO提供高速的数据甬道,管理客户机与服务器的联接,在客户机和服务器之间只传送服务名、参数和最终结果,和业务逻辑完全分离,最大限度减少了网络上的传输量。
●提高主机处理能力-联机业务处理的应用系统用户数量很多,有时甚至达到几十万,交易量也非常大,主机处理能力对系统而言是一个关键因素。
而在主机方面,维持一个网络连接需要耗费大量内存、进程句柄、信号量、CPU时间片等系统资源。
TUXEDO利用高速数据甬道,将大量连接汇接成很少的连接,从而节省了大量系统资源,成倍提高了主机的处理能力。
●提高数据库效率-数据库在并行用户数增加时,效率会急剧下降,因为每个并行用户必须和数据库建立一个会话,如果用户数过多,数据库引擎会忙于会话的资源管理和并行控制,影响它所擅长的数据管理工作的效率。
TUXEDO可以通过数据甬道大大减少和数据库建立的会话数,将数据库管理系统从其不擅长的业务中解放出来,从而大大提高数据操作的效率。
目录服务的实现BEA TUXEDO提供两类目录服务,即按名请求服务和数据依赖的路由选择服务。
· 名字服务/位置透明性BB作为BEA TUXEDO应用程序的名字服务器,复制到每个参与的结点上。
为了便于快速访问,名字服务器作为在共享内存中的一个结构存在。
事务管理器使用BB名字信息、配置信息和环境统计信息自动把服务请求以负载平衡的原则分配到可用的服务器上,并且根据服务优先级决定处理顺序。
TUXEDO安装部署使用排错文档
一、TUXEDO安装步骤:
1、使用root账号登录服务器,将安装包上传到服务器;
2、使用gunzip进行安装包解压,并使用tar格式安装;
4、在/usr/lib目录下,创建一个属于tuxedo自身的安装目录,并将安装包解压到指定的安装目录下;
5、拷贝编译参数,全选安装,选择正确版本;
6、执行makeml安装脚本,此时,系统会在/usr/lib/tuxedo下生成一个tuxedo11g.
10、最后,使用tmadmin启动TUXEDO;
二、TUXEDO使用方法
使用TUXEDO,可以实现负载均衡,并发支持,进程管理,安全服务等功能。
TUXEDO使用过程如下:
1、配置TUXEDO服务端:首先配置服务端环境,然后在一台服务器上配置TUXEDO服务;
2、配置TUXEDO客户端:配置客户端环境,配置TUXEDO客户端,并实现与服务端的连接;
3、测试TUXEDO服务:使用TUXEDO调试程序,测试TUXEDO客户端是否可以与TUXEDO服务器正常通信;
4、启动TUXEDO服务:使用tmadmin管理工具,启动TUXEDO服务,实现进程管理,负载均衡等功能;。
tuxedo命令和配置的详细解释及应用实例域的组成BDMCONFIG:二进制配置文件DMADM:域管理服务器,管理多个GWADMGWADM:运行时网关管理服务器,从DMADM服务器上获取域信息GWTDOMAIN:是一个网关进程,在域之间转发消息tmshutdown/tmboot -s 服务名按服务名停/启单个服务tmshutdown/tmboot -S (大写的S)停/启所有服务tmshutdown/tmboot -i 进程号按进程号停/启单个服务tmshutdown/tmboot -g 组名字按组停/启服务tmshutdown/tmboot -y -w1 按用户停/启服务tmloadcf -n 文件名只做语法检查不编译tmloadcf -y 文件名编译二进制文件tmloadcf -c 文件名测试IPC资源最小需求tmadmin -v 版本tmadmin>bbp 查BB的参数bbs BB统计信息pclt 连接客户端信息psr server信息psc service信息pt 当前事物信息pq 队列信息echo psr|tmadmin|grep -v IDLEecho psr|tmadmin|sort +4echo psc|tmadmin|sort +6echo pq|tmadmin|sort +4echo pclt|tmadmin|grep -v WSH|grep -v tmadmin以下是tmadmin命令的printserver(简写为psr)的简单输出。
列号描述1. 服务的可执行文件名2. 服务连接的队列名3. 组名4. 服务的数字id5. 服务已经处理的请求数6. 服务处理的全部请求的参数和7. 服务正在处理的交易,若为IDLE则服务当前是空闲ccsmis:/home2/ccsmis>tmadmintmadmin - Copyright (c) 1996 BEA Systems, Inc.Portions * Copyright 1986-1997 RSA Data Security, Inc.All Rights Reserved.Distributed under license by BEA Systems, Inc.Tuxedo is a registered trademark.> printserverProg Name Queue Name Grp Name ID RqDone Load Done Current Service --------- ---------- -------- -- ------ --------- --------------- rz_Ecsb 00004.04000 APGP2 4000 0 0 ( IDLE )BBL 70020 simple 0 1 50 ( IDLE ) IFMTMS APGP2_TMS APGP2 30001 1 50 ( IDLE )交易信息来自GAI的信息本处略去。
负载均衡测试方案前言负载均衡是一种常用的解决高并发访问的方法,通过将请求分散到多个服务器上,以达到提高网站性能、响应速度和可靠性的目的。
为了确保负载均衡的正常运行和性能优化,需要进行相关的测试工作。
本文将详细介绍负载均衡的测试方案,包括测试目标、测试环境、测试场景、测试工具、测试步骤和结果分析。
测试目标1.验证负载均衡配置的正确性和可用性。
2.测试负载均衡在高负载情况下的性能表现。
3.评估负载均衡系统在处理各种请求负载时的吞吐量和响应时间。
测试环境•负载均衡器:选择一种常见的负载均衡器,如Nginx、HAProxy等。
•后端服务器:至少有两台具备相同配置的服务器,用于模拟负载均衡的后端服务。
测试场景1.正常负载场景:模拟有限用户数的正常使用情况,评估负载均衡器的性能。
2.高负载场景:模拟大量用户请求同时达到的情况,评估负载均衡器在高压力下的表现。
3.失效场景:模拟后端服务器宕机或网络故障的情况,验证负载均衡器的容错能力。
4.动态扩展场景:模拟后端服务器的动态增加和移除,测试负载均衡器在动态变化环境下的稳定性和自动调整。
测试工具1.Apache Bench:用于模拟并发请求,测试负载均衡器的性能和稳定性。
2.HttpWatch:用于分析和监控HTTP请求和响应的性能指标。
3.Jmeter:用于进行复杂的压力测试,模拟多种场景下的负载情况。
测试步骤1.部署负载均衡器和后端服务器。
2.配置负载均衡器,包括负载均衡算法、会话保持等相关参数。
3.使用Apache Bench进行简单的性能测试,记录吞吐量和响应时间。
4.使用HttpWatch监控请求和响应的性能指标,包括页面加载时间、带宽利用率等。
5.使用Jmeter进行复杂的压力测试,模拟正常负载、高负载、失效和动态扩展等场景。
6.分析测试结果,对比各项指标,评估负载均衡器的性能和稳定性。
7.根据测试结果,调整负载均衡器相关参数和配置,优化系统性能。
结果分析1.性能评估:根据测试结果中的吞吐量和响应时间,评估负载均衡器在不同负载情况下的性能表现。
BEA TUXEDO标准选件近几年来,以交易中间件为框架基础的三层客户机/服务器模式已被广泛证实为建立开放式关键业务应用系统的最佳环境。
这种模式的成功使用已为许多国际大型企业在应用的开发和部署方面节省了大量的时间和金钱。
三层客户机/服务器模式的核心概念是利用交易中间件将应用的业务逻辑、表示逻辑和数据分为三个不同的处理层,从而使其应用系统不但具备了大型机系统稳定、安全和处理能力高等特性,同时拥有开放式系统成本低、可扩展性强、开发周期短等优点。
而交易中间件作为构造三层结构应用系统的基础平台,提供了以下两个主要功能:负责客户机和服务器间的联接和通讯;提供一个三层结构应用开发和运行的平台。
交易中间件提供一个基础的框架去帮助你建立、运行和管理一个三层客户机/服务器模式的应用,使你不需要从零做起,大大缩短了应用开发的时间,提高了应用开发的成功率。
根据Standish Group的调查报告,采用一个成熟的交易中间件产品能够为应用开发节省25%-50%的时间。
而通过自己去开发应用里中间件功能的项目,有90%以上以失败告终。
一个优秀的交易中间件应具备以下六个条件:(1) 成熟、稳定、可靠(2) 很强的产品生命力(3) 完整、高质量的功能(4) 优秀的性能(5) 开放、遵循标准(6) 简单、易用而TUXEDO就是一个具备了以上所有条件的优秀的中间件产品。
本节将对TUXEDO进行介绍,包括以下内容:1 BEA TUXEDO的技术特色2 BEA TUXEDO的核心系统组成3TUXEDO技术详述3.1高速数据甬道3.2 目录服务的实现3.3 通讯服务3.4 负载平衡3.5 优先级3.6 伸缩性与动态配置的支持3.7 故障恢复与稳固的运行环境3.8 安全性3.9 交易完整性与分布式事务处理3.10 支持多种数据类型和字段控制语言3.11 管理3.12 网络调度与通讯失败的自动恢复3.13 提供5种API3.14 支持字符界面的开发3.15 对远程安装,设置的支持4 国际化5 与数据库的连接6 开发工具7 跨平台支持8 互连性9 典型开发过程简介10 节省费用1. BEA TUXEDO的技术特点(1) 最成熟、稳定、可靠的开放平台交易中间件产品•16年的历史,世界第一个开放平台交易中间件产品•数千个大型客户,数百万个前端用户,每天处理数亿笔交易•在全球交易中间件市场(包括WAS)上占据了46%的市场占有率,包括主机平台,开放系统等等,而第二名的IBM只占据了9%(来自IDC1999报告)(2) 最强生命力的开放平台交易中间件产品●以开放为本,BEA TUXEDO出身于开放系统的化身—UNIX,从其基础体系结构上就是开放的,目的是支持所有开放的系统资源。
Tuxedo是一个客户机/服务器的―中间件‖产品,它在客户机和服务器之间进行调节,以保证正确地处理事务。
Tuxedo是一个事务处理(TP)监督器,它管理联机事务处理(OLTP)系统(参见―事务处理‖)操作的事务。
客户通过结构化查询语言(SQL)调用,或其它类型的请求,产生对服务器的请求。
这个事务处理监督器确信,正确地进行了修改,以保证数据的完整性。
这在一个事务可以改变多个位置的数据库的分布式数据库环境是非常重要的。
这个事务处理监督器使用双阶段提交,以保证所有的数据库都已经接收和认可了这些数据的正确性。
否则,这个数据库返回它的事务前状态。
事务监督器从前都是与大的大型计算机系统联系在一起的,但是Tuxedo的设计是为了在不昂贵的基于UNIX的系统上运行。
AT&T最初是作为它自己使用的联机事务处理开发Tuxedo的。
虽然Tuxedo必须在U-NIX系统上运行,但是它可以与DOS、OS/2、Windows和UNIX客户一起工作。
它还使用通用的通信协议,如传输控制协议/因特网协议(TCP/IP)和网络基本输入输出系统(NetBIOS),并且可以在这些环境提供分布式处理支持。
例如,它可以根据请求的类型,服务请求从一个客户选择路由到一个特定的服务器。
Tuxedo的基本特征是它的联机事务处理系统,但是,Tuxedo也工作于集成关系型的平面文件,以及层次数据库系统。
相关条目:Connectionless and Connection-Oriented Transactions无连接和面向连接事务;Transaction Processing 事务处理。
Tuxedo作为电子商务交易平台,它允许客户机和服务器参与一个涉及多个数据库协调更新的交易,并能够确保数据的完整性。
BEA Tuxedo一个特色功能是能够保证对电子商务应用系统的不间断访问。
它可以对系统组件进行持续的监视,查看是否有应用系统、交易、网络及硬件的故障。
Tuxedo完全操作⼿册⼀、tuxedo的配置1、展开tuxedo包,例如:/home/tuxedo2、配置ubbconfig⽂件在江苏建⾏是jsccb.ubb*RESOURCES*RESOURCES节包含整个应⽤范围的信息。
本节必须在配置⽂件第⼀节,不可缺少。
参数意义*RESOURCES *RESOURCES节IPCKEY 共享内存idUID TUXEDO管理员⽤户idGID TUXEDO管理员⽤户idPERM TUXEDO管理员组⽤户的权限MAXACCESSERS 服务端和客户端的最⼤进程数MAXSERVERS 限制可以启动服务总数MAXSERVICES 限制可以发布交易总数MASTER 指出主控节点的逻辑名,第⼆个是备份节点MODEL 应⽤构架,MP表⽰多机OPTIONS LAN,MIGRA TE表⽰是⼀个⽹络应⽤,服务可以移植到替代处理器上SECURITY 安全级别(5个)AUTHSVC 客户端可以通过交易“AUTHSVC”获得认证NOTIFY DIPIN,客户端通过dip-in收到⼴播通知SYSTEM_ACCESS PROTECTED,NO_OVERRIDE,应⽤代码不得⼲扰共享内存LDBAL 设Y则进⾏负载平衡MAXBUF[S]TYPE 数据缓冲类型及⼦类的最⼤数SCANUNIT 内部时间间隔单位,单位是秒SANITYSCAN 检索公告牌的内部时间间隔,单位是SCANUNITBLOCKTIME 交易超时时间,单位是SCANUNITBBLQUERY DBBL查询所有BLL的时间间隔DBBLWAIT DBBL等待BBL回应的超时时间MAXCONV 同时最⼤会话数jsccb.ubb的实例###################### RESOURCES SECTION ######################*RESOURCESIPCKEY 234567DOMAINID JSCCBMASTER SERVER1MAXSERVERS 900MAXSERVICES 2000CMTRET LOGGEDMODEL MPLDBAL YSECURITY NONEMAXGTT 500OPTIONS LANBLOCKTIME 12*MACHINES*MACHINES节包含应⽤有关的每个处理器的信息。
Tuxedo参数配置MASTER bill1,bill2#指定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重复记入)MAXOBJECTS 20#系统最多存在的CORBA对象数目MODEL MP#表示cluster方式,否则为SHMOPTIONS LAN,MIGRATE#多机cluster方式时必须指定为LAN方式,MIGRATE表示可以以以组为单位进行机器间SERVER的迁移。
SCANUNIT 10#SCANUNIT 是BBL在所有服务请求中定期扫描以寻找超时的交易和被阻塞德调用和德间隔时间(秒)。
这个参数指定BBL扫描间隔时间的基本单位,它会影响在tpbegin中指定的交易超时时间和用BLOCKTIME指定的请求阻塞超时时间的精确程度。
SANITYSCAN, BBLQUERY, DBBLWAIT, BLOCKTIME 等参数都是SCANUNIT的倍数,而不是实际秒数。
而作为时间单位SCANUNIT必须是5的倍数,并且满足0<SCANUNIT<60。
SANITYSCAN 12#SANITYSCAN的值指定在每个MACHINE上BBL自动检测所有进程的时间间隔,以SCANUNIT为单元。
11. 附录11.1 simpsvrUp#include#include "atmi.h"void TOUPPER(TPSVCINFO *rqst){int i;char *buf;long sendlen,rcvlen;for(i = 0; i < rqst->len-1; i++)rqst->data[i] = toupper(rqst->data[i]);userlog("From Client ReqId[%s]",rqst->data);sendlen = rqst->len;if((buf = (char *) tpalloc("STRING", NULL, sendlen+1)) == NULL){(void) fprintf(stderr,"Error allocating send buffer\n");tpterm();exit(1);}(void) strcpy(buf, rqst->data);if (tpcall("TOLOWER", (char *) buf, 0, (char **)&buf, &rcvlen, (long)0 ) == -1) {userlog( "TPCALL ERROR CODE %d message[%s]", tperrno, tpstrerror(tperrno)); (void) fprintf(stderr, "Tperrno = %d\n", tperrno);tpfree( buf);tpreturn(TPSUCCESS, 0, buf, 0L, 0);}userlog("Call Remote ToLower Success [%s]", buf);tpreturn(TPSUCCESS, 0, buf, 0L, 0);}11.2 simpsvrLow#include#include "atmi.h"void TOLOWER(TPSVCINFO *rqst){int i;for(i = 0; i < rqst->len-1; i++)rqst->data[i] = tolower(rqst->data[i]);userlog("From Client ReqId[%s]",rqst->data);printf("In ToLower");//sleep(10);tpreturn(TPSUCCESS, 0, rqst->data, 0L, 0); }11.3 ubbmp*RESOURCESIPCKEY 45678MASTER site1,site2MAXACCESSERS 1000MAXSERVERS 200MAXSERVICES 100MODEL MPLDBAL YOPTIONS LAN,MIGRATE*MACHINESFireCat1 LMID=site1UID=508GID=508APPDIR="/home/tuxapp/tuxedo"TUXCONFIG="/home/tuxapp/tuxedo/tuxconfig" TUXDIR="/home/tuxedo/tuxedo8.1"TYPE="linux"MAXWSCLIENTS=100FireCat2 LMID=site2UID=508GID=508APPDIR="/home/tuxapp/tuxedo"TUXCONFIG="/home/tuxapp/tuxedo/tuxconfig" TUXDIR="/home/tuxedo/tuxedo8.1"TYPE="LINUX"MAXWSCLIENTS=100*GROUPSGROUP1LMID=site1 GRPNO=1 OPENINFO=NONEGROUP2LMID=site2 GRPNO=2 OPENINFO=NONE*NETWORKsite1 NADDR="//192.168.8.120:6009"NLSADDR="//192.168.8.120:8888"site2 NADDR="//192.168.8.121:7010"NLSADDR="//192.168.8.121:8888"*SERVERSRESTART=N MAXGEN=5 REPLYQ=Y CLOPT="-A"WSL SRVGRP=GROUP1 SRVID=1CLOPT="-A — -n //192.168.8.120:9502 -m 5 -x 5 -M 30"WSL SRVGRP=GROUP2 SRVID=100CLOPT="-A — -n //192.168.8.121:9502 -m 5 -x 5 -M 30"simpsvr SRVGRP=GROUP2 SRVID=11 RQADDR=RQ_simp1 RQPERM=0666 CLOPT="-A -p 1,10:2,1 " MIN=5 MAX=10 simpsvr SRVGRP=GROUP1 SRVID=111 RQADDR=RQ_simp2 RQPERM=0666 CLOPT="-A -p 1,10:2,1 " MIN=5 MAX=10 *SERVICES11.4 country ubbdm*RESOURCESIPCKEY 240000MASTER tuxtestPERM 0666MAXACCESSERS 1000MAXSERVERS 50MAXSERVICES 100MODEL SHMLDBAL YSCANUNIT 5SANITYSCAN 12BBLQUERY 30DBBLWAIT 2BLOCKTIME 6*MACHINESDEFAULT:CharlesLinux LMID=tuxtestMAXWSCLIENTS=100APPDIR="/home/tuxapp/tuxedo"TUXCONFIG="/home/tuxapp/tuxedo/tuxconfig"TUXDIR="/home/tuxedo/tuxedo8.1"ULOGPFX="/home/tuxapp/tuxedo/ULOG"*GROUPSADMINLMID=tuxtest GRPNO=1 OPENINFO=NONEREMITLMID=tuxtest GRPNO=2 OPENINFO=NONEDOMGRPLMID=tuxtest GRPNO=3DOMGRP1LMID=tuxtest GRPNO=4LMID=tuxtest GRPNO=5*SERVERSDEFAULT:CLOPT="-A " REPLYQ=Y RESTART=Y GRACE=0 MAXGEN=5WSL SRVGRP=ADMIN SRVID=1CLOPT="-A -t — -n //111.111.111.22:6666-m 10 -M 100 -x 5"simpsvrUp SRVGRP=REMIT SRVID=10 RQADDR=RQ_simpUp RQPERM=0666 CLOPT="-A – p 1,10:2,1 " MIN=2 MAX=10 DMADM SRVGRP=DOMGRP SRVID=3050 REPLYQ=N RESTART=Y GRACE=0GWADM SRVGRP=DOMGRP1 SRVID=3051 REPLYQ=N RESTART=Y GRACE=0GWTDOMAIN SRVGRP=DOMGRP1 SRVID=3052 RQADDR=RQ_GWT1 REPLYQ=Y RESTART=Y MIN=1 MAX=1GWADM SRVGRP=DOMGRP2 SRVID=3053 REPLYQ=N RESTART=Y GRACE=0GWTDOMAIN SRVGRP=DOMGRP2 SRVID=3054 RQADDR=RQ_GWT2 REPLYQ=Y RESTART=Y MIN=1 MAX=1*SERVICES11.5 countrydom*DM_RESOURCES*DM_LOCAL_DOMAINSHOME1 GWGRP=DOMGRP1CONNECTION_POLICY=ON_STARTUPTYPE=TDOMAINDOMAINID="EPR111"BLOCKTIME=10MAXDATALEN=1000MAXRDOM=89#DMTLOGDEV="/home/tuxapp/tuxedo/tlog/DMTLOG"HOME2 GWGRP=DOMGRP2CONNECTION_POLICY=ON_STARTUPTYPE=TDOMAINDOMAINID="EPR112"BLOCKTIME=10MAXDATALEN=1000*DM_REMOTE_DOMAINSRMTGJ TYPE=TDOMAINDOMAINID=EPRGJ*DM_TDOMAINHOME1 NWADDR="//111.111.111.22.:6651"HOME2 NWADDR="//111.111.111.22:6652"RMTGJ NWADDR="//111.111.111.33:6660"*DM_LOCAL_SERVICESTOUPPER*DM_REMOTE_SERVICES# TOLOWER LDOM= HOME1 RDOM= RMTGJ RNAME= TOLOWER# TOLOWER LDOM= HOME2 RDOM= RMTGJ RNAME= TOLOWER11.6 world ubbdm*RESOURCESIPCKEY 240000MASTER tuxtestPERM 0666MAXACCESSERS 1000MAXSERVERS 50MAXSERVICES 100MODEL SHMLDBAL YSCANUNIT 5SANITYSCAN 12BBLQUERY 30DBBLWAIT 2BLOCKTIME 6*MACHINESDEFAULT:localhost LMID=tuxtestMAXWSCLIENTS=100APPDIR="/home/tuxapp/tuxedo"TUXCONFIG="/home/tuxapp/tuxedo/tuxconfig"TUXDIR="/home/tuxedo/tuxedo8.1"ULOGPFX="/home/tuxapp/tuxedo/ULOG"TLOGDEVICE="/home/tuxapp/tuxedo/tlog/TLOG"*GROUPSADMINLMID=tuxtest GRPNO=1 OPENINFO=NONEREMITLMID=tuxtest GRPNO=2 OPENINFO=NONEDOMGRPLMID=tuxtest GRPNO=3*SERVERSDEFAULT:CLOPT="-A " REPLYQ=Y RESTART=Y GRACE=0 MAXGEN=5WSL SRVGRP=ADMIN SRVID=1CLOPT="-A — -n //111.111.111.121:6669 -m 1 -M 100 -x 5"simpsvrLow SRVGRP=REMIT SRVID=110 RQADDR=RQ_simpLow RQPERM=0666 CLOPT="- A – p 1,10:2,1 " MIN=2 MAX=10 DMADM SRVGRP=DOMGRP SRVID=3050 REPLYQ=NGWADM SRVGRP=DOMGRP SRVID=3051 REPLYQ=NGWTDOMAIN SRVGRP=DOMGRP SRVID=3052 REPLYQ=Y*SERVICES11.7 worlddom*DM_RESOURCES*DM_LOCAL_DOMAINSHOME GWGRP=DOMGRPTYPE=TDOMAINDOMAINID="EPRGJ"BLOCKTIME=10MAXDATALEN=1000MAXRDOM=89#DMTLOGDEV="/home/tuxapp/tuxedo/tlog/DMTLOG"*DM_REMOTE_DOMAINSRMT111 TYPE=TDOMAINDOMAINID=EPR111RMT112 TYPE=TDOMAINDOMAINID=EPR112*DM_TDOMAINHOME NWADDR="//111.111.111.121:6660"RMT111 NWADDR="//111.111.111.120:6651"RMT112 NWADDR="//111.111.111.120:6652"*DM_LOCAL_SERVICES#TOUPPERTOLOWER*DM_REMOTE_SERVICESTOUPPER#TOLOWER11.8 LoadRunner Scriptvuser_init:vuser_init(){return 0;}Action:#include "lrt.h"#include "replay.vdf"Action(){lrt_tuxputenv("WSNADDR=//111.111.111.22:6666");tpresult_int = lrt_tpinitialize(LRT_END_OF_PARMS);lrt_abort_on_error();data_0 = lrt_tpalloc("STRING", "", 4); lrt_strcpy(data_0, sbuf_1);data_1 = lrt_tpalloc("STRING", "", 4); tpresult_int = lrt_tpcall("TOUPPER", data_0,0,&data_1,&olen,0);lrt_abort_on_error();lrt_tpfree(data_0);lrt_tpfree(data_1);lrt_tpterm();return 0;}vuser_end:vuser_end(){return 0;}replay.vdf:#ifndef TUXVDF_H#define TUXVDF_Hchar* data_0;char* data_1;static const char sbuf_1[] ="yyy";/* Reply STRING buffer 1"yyy""\x0";Reply buffer */#endif11.9 bang Program#include#include"atmi.h"#include#include#include#include#includevoidPrtMillTime(char*);voidscallserver(intbuflen,char*sbuf);main(void){inti,j;charsToDo[200];charsReqId[11];pid_tchild;memset(sToDo,’\0′,sizeof(sToDo));memset(sReqId,’\0′,sizeof(sReqId));PrtMillTime(sReqId);printf("starttime[%s]\n",sReqId);for(i=0;i<=30;i++){if((child=fork())==-1){//printf("ForkError:%s\n",strerror(errno));printf("ForkError\n");exit(1);}elseif(child==0){sprintf(sToDo,"%s%d\n","/home/tuxapp/bin/simpcli",getpid()); for(j=0;j<100;j++){//PrtMillTime(sReqId);//printf("Iamthechild:%ld\n",getpid());sprintf(sToDo,"%d",getpid());scallserver(1,sToDo);}exit(2);}}PrtMillTime(sReqId);printf("endtime[%s]\n",sReqId);exit(0);}voidPrtMillTime(char*sDesc){structtm*tmCurTime;structtimebtbTimeBlock;charszDescription[41];charsRet[20];memset(szDescription,0,sizeof(szDescription));strncpy(szDescription,sDesc,40);memset(sRet,’\0′,sizeof(sRet));ftime(&tbTimeBlock);tmCurTime=localtime(&tbTimeBlock.time);sprintf(sDesc,"%02d%02d%02d%02d%03d",tmCurTime->tm_mday,tmCurTime->tm_hour,tmCurTime->tm_min,tmCurTime->tm_sec,litm);}voidscallserver(intbuflen,char*sbuf){char*buf;longsendlen,rcvlen;intret;if(tpinit((TPINIT*)NULL)==-1){(void)fprintf(stderr,"Tpinitfailed\n");exit(1);}sendlen=strlen(sbuf);if((buf=(char*)tpalloc("STRING",NULL,sendlen+1))==NULL){(void)fprintf(stderr,"Errorallocatingsendbuffer\n");tpterm();exit(1);}(void)strcpy(buf,sbuf);ret=tpcall("TOUPPER",(char*)buf,0,(char**)&buf,&rcvlen,(long)0);if(ret==-1){(void)fprintf(stderr,"Can’tsendrequesttoserviceTOUPPER\n");(void)fprintf(stderr,"Tperrno=%dmessage[%s]\n",tperrno,tpstrerror(tperrno));tpfree(buf);tpterm();exit(1);}tpfree(buf);tpterm();}编辑于联动北方技术论坛。