2012年(6)
分类: 数据库开发技术
2012-06-04 15:50:22
WebLogic Server配置和性能调优
目 录
2.1.1 创建Standalone Server Domain. 7
2.1.2 创建Standalone Server Domain. 13
4.1.1 TPENOENT(6):0:0:TPED_MINVAL(0):QMNONE(0):0:No local or remote domain available xxx服务... 27
4.1.2 TPESYSTEM(12):0:0:TPED_MINVAL(0):QMNONE(0):0. 27
4.1.3 TPESYSTEM(13):0:0:TPED_MINVAL(0):QMNONE(0):0. 28
4.1.4 TPESYSTEM(10):0:0:TPED_MINVAL(0):QMNONE(0):0. 28
4.2.1 为什么页面中的图表(饼图,柱状图)和验证码等图片在WebLogic环境中不能正常显示? 28
4.2.3 JSP里面的静态文件、include JSP 中文显示不正常,这个问题怎么解决? 29
4.2.4 当发生JDBC连接池泄漏现象时,如何进行调试?... 29
1 准备知识Domain 是WebLogic Server实例的基本管理单元。更详细的解说应该是,所谓Domain就是,由配置为Administrator Server的WebLogic Server实例管理逻辑单元,这个单元是有所有相关资源的集合。
Domain的类型:
² Standalone Server Domain
它主要是用来发布单一的应用程序,由单一WebLogic Server组成并且由它来负责web应用程序的运行。
² Admin Server with Managed Servers
这是一个最简单的企业运行环境。它可以发布多个Server实例去负责web应用程序的运行,由其中的一个Administration Server负责管理功能。
² Domain with Managed Servers and Clusters
具有更高性能的商业运行环境。
Server 是一个相对独立的,为实现某些特定功能而结合在一起的单元。
Machine 是一台运行一个或多个Weblogic Server实例的主机.
Clustering :WebLogic集群技术指通过一组服务器共同工作,在多台机器间复制应用表示层和应用逻辑层的能力,实现关键业务系统的负载分布,消除个别故障点。 集群用来实现负载均衡和容错
属性名称 |
|
BEA产品 |
WebLogic Server 8.1 SP5 |
OS |
AIX Version 5 |
SDK |
java version "1.4.2" Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2) Classic VM (build 1.4.2, J2RE 1.4.2 IBM AIX build ca142-20050929a (SR3) (JIT enabled: jitc)) |
配置
进入{WL_HOME}/weblogic81/common/bin/,执行config.sh
Standalone Server Domain
Step A- 1:
Step A-2:
Step A-3:选择非向导模式(express mode).
Step A-4:在图4界面,可以配置Server名称,监听端口等信息.
注意:配置的监听端口一定是未用状态才可以。
Step A-5:是否进行管理Server、集群和机器(machines)配置,选择否,按’Enter’键继续
Step A-6:
Step A-7:
Step A-8: 输入[1]回车,即修改当前输入的用户名,默认用户名为weblogic,提示输入一个当前域管理的新的用户名,
输入好后回车,例如weblogic,如下图,继续操作,输入[2]设置这个用户的密码
Step A-9:输入八位密码
Step A-10:
Step A-11:
Step A-12:
Step A-13:选择Domain运行模式,开发环境我们选择”1|开发模式”,生产环境我们选择”2|生产模式”.
Step A-14:选择JDK
Step A-15:
Step A-16:输入domain路径
Step A-17:输入domain名称
Step A-18:
Step A-19:domain创建成功
在配置standalone Server Domain 的 Step A-5 ”Managed Servers,Clusters and Machines”选项,配置 Managed Server.
Step B-6:
Step B-7: 输入Managed Server名称,以及监听端口号
Step B-8:
Step B-9:继续配置managed server,输入p,按’Enter’继续
Step B-10:重复Step B-7,Step B-8
Step B-11:managed Server配置完毕,按照Step A-6 ---- Step A-19进行WebLogic 其他配置。
配置
TUXEDO与WEBLOGIC之间通过DOMAIN方式实现互相调用,文档中如果没有特殊申明:
TUXEDO所在的DOMAIN名为 TDOM1 。
TDOM1 Network Address ://172.16.24.105:17012
WEBLOGIC所在的 DOMAIN名为WDOM1。
WDOM1 Network Address://172.16.24.105:17011
TDOM1上有一个TUXEDO SERVEICE sPubSelect。
注:TDOM1、WDOM1 network address的端口号一定是没有占用的,
端口号要大于1024。
配置² 修改DMCONFIG文件
DM_REMOTE_DOMAINS段中加入
WDOM1 TYPE=TDOMAIN DOMAINID="WDOM1"
² DM_TDOMAIN段中加入
TDOM1 NWADDR="//172.16.24.105:17012"
WDOM1 NWADDR="//172.16.24.105:17011"
² dmloadcf /loaddm DMCONFIG
² stop TUXEDO , start TUXEDO
配置通过 WebLogic控制台配置 WTC。
² 创建WTC 服务: 在 Administration Console 屏中 , 部署 Services 节点并单击 WTC 。将显示 WTC Services 屏。单击 Configure a New WTC Service 超链接。新显示的屏包括两个文本域: WTC 服务的名字和它的部署优先权顺序。单击 Create 按钮来新建一个 WTC 服务。
² 创建Tuxedo本地访问点: 单击该服务页的“ Content ”选项卡,并在新显示的页面中单击“ Local Aps ”选项卡。要创建新的本地访问点,单击“ Configure a New Local Tuxedo Access Point ”超链接。在 Tuxedo 本地访问点的“ General ”选项卡中,填写域“ Access Point ”、“ Access Point ID ”和“ Network Address ”。其中第一个域是用户选择名,第二个和第三个域必须与 DOMCONFIG 配置文件的 DM_TDOMAIN 段相关联。一般第一个域与第二个域所填的值都相同
² 创建远程 Tuxedo 访问点。 单击该服务页的“ Contents ”选项卡,并在新显示的页面中单击“ Remote Aps ”选项卡。要创建新的 Tuxedo 远程访问点,单击“ Configure a New Remote Tuxedo Access Point ”超链接。在 Tuxedo 远程访问点的“ General ”选项卡中,填写域“ Access Point ”、“ Access Point ID ”、“ Local Access Point ”和“ Network Address ”。其中第一个域是用户选择名,第二个和第四个域必须与 DOMCONFIG 配置文件的 DM_TDOMAIN 段相关联。第三个域必须是我们在先前步骤中所选择的本地 访问点名。在同一屏的“ Connections ”选项卡中的默认域值对于大多数情况都是适用的。一般第一个域与第二个域所填的值都相同
² 导入服务:单击该服务页的“ Contents ”选项卡,并在新显示的页面中单击“ Imported ”选项卡。要导入 WTC 服务,单击“ Configure a New Imported Service ”超链接。在“ General ”选项卡中,“ Resource name ”域 用户选择名(这个名webLogic自己用的,可以与Remote Name 不一样)。第二个和第三个域分别是先前定义的本地和远程 Tuxedo 访问点。最后 ,“ Remote name ”域 必须是Tuxedo中存在的服务。
² 重新部署:新注册的WTC服务只有在Server重新发布有才会生效。点击“Target and Deploy”选项卡,首先选择”None“单选按钮,点击’Apply’;然后选择Server”实例名称”按钮,点击”Apply”,WTC服务发布生效。
连通性的简单检查方法
² 确认DMCONFIG配置无问题,比如tab键分割,而不是空格之类的错误,load是否成功,重新dmloadcf /loaddm一下
² 查看域连接情况
>dmadmin
# 连接一个远程的domain
> co -d TDOM1 -R WDOM1
Operation completed successfully. Use printdomain(pd) to obtain results.
# 查看TDOM的远程domain列表
> pd -d TDOM1
Local domain :TDOM1
Connected domains:
Domainid: WDOM1
² 检查TUXEDO配置情况,
查看UBBCONFIG关于domains配置情况,如所在的group,本例为WTCGRP_SXBOSS;检查TUXEDO配置情况,查看UBBCONFIG关于domains配置情况,如所在的group,本例为WTCGRP_SXBOSS
>tmadmin
> psc -g WTCGRP_SXBOSS
Service Name Routine Name Prog Name Grp Name ID Machine # Done Status
------------ ------------ --------- -------- -- ------- ------ ------
DMADMIN DMADMIN DMADM WTCGR+ 1 SXBOSS 0 AVAIL
TDOM1 GWS GWADM WTCGR+ 2 SXBOSS 0 AVAIL
尤其要注意是否存在 GWTDOMAIN
确认远程的domain的service是否在上述列表中,如果没有,则调用失败
² 启动/停止整个group
tmshutdown -g WTCGRP_SXBOSS;tmboot -g WTCGRP_SXBOSS
# 虽然DMADM 与 GWADM/GWTDOMAIN 放在一起,但是在整个tuxedo server中 DMADM是唯一的; GWADM/GWTDOMAIN
可以有多对,多个group.
也可以启停其中GWADM/GWTDOMAIN任意一个:
指定server id的形式
tmshutdown -i 2;tmboot -i 3;
配置 调优为提高高性能的吞吐量,应该把Java 堆的最小值与最大值设为相等。而为了防止内存溢出等情况的发生,需要把Java堆的大小调整成合适的值;下面是设置Java堆的大小的方法:
² commEnv.sh中设置
需要在WebLogic Server的启动脚本中,指定JAVA_VENDOR变量的值
JAVA_VENDOR=”Sun”
MEM_ARGS =“MEM_ARGS="-Xms1536m -Xmx1536m -XX:PermSize=128m -XX:MaxPermSize=256m"”
² WebLogic的启动脚本中设置(startWebLogic.sh)
MEM_ARGS赋值:
例:
MEM_ARGS =“MEM_ARGS="-Xms1536m -Xmx1536m -XX:PermSize=128m -XX:MaxPermSize=256m"”
WebLogic Server启动脚本中:
${JAVA_HOME}/bin/java -D9001 ${JAVA_VM} ${MEM_ARGS} ${JAVA_OPTIONS} -Dweblogic.Name=${SERVER_NAME} -Dweblogic.ProductionModeEnabled=${PRODUCTION_MODE}
调优 库
WebLogic Server有两套套接字复用器:Java版和本地库。采用小型本地库更有效,尽量激活Enable Native IO(默认),此时UNIX默认使用CPUs+1个线程,Window下为双倍CPU。如果系统不能加载本地库,将会抛出java.lang.UnsatisfiedLinkException,此时只能使用Java套接字复用器,可以调整socket readers 百分比,默认为33%。该参数可以在Console Server Tuning Configuration配置栏里设置,配置完,重新启动WebLogic Server即可。
名称 |
开发模式 |
产品模式 |
推荐个数 |
Execute Queues |
默认的执行线程为15 |
默认的执行线程为25 |
200 |
在管理控制台修改默认执行队列线程数的步骤如下:
² 如果管理服务器没有运行,先启动。
² 访问管理控制台。
² 展开左边面板的Servers 节点,显示Server列表。
² 右击Server,在弹出菜单中选择View Execute Queues ,就会在右边面板显示有执行队列的表用来修改。
² 注意:你只能修改默认的执行队列或者用户定义的执行队列。
² 在Name列,直接点击默认执行队列名称,显示配置标签用来修改执行队列数。
² 填下适当的线程数。
² 点击Apply,保存刚才的修改。
² 重启Server,使新的执行队列设置生效。
调优
Oracle提供thin驱动和oci驱动,从性能上来讲,oci驱动强于thin驱动,特别是大数据量的操作。但在简单的数据库操作中,性能相差不大,随着thin驱动的不断改进,这一弱势将得到弥补。而thin驱动的移植性明显强于oci驱动。所以在通常情况下建议使用thin驱动
JDBC Connection Pool的调优受制于WebLogic Server线程数的设置和数据库进程数,游标的大小。通常我们在一个线程中使用一个连接,所以连接数并不是越多越好,为避免两边的资源消耗,建议设置连接池的最大值等于或者略小于线程数。同时为了减少新建连接的开销,将最小值和最大值设为一致;值等于WebLogic Server的执行线程数。
尽管JDBC Connection Pool提供了很多高级参数,在开发模式下比较有用,但大部分在生产环境下不需调整。这里建议最好不要设置测试表, 同时Test Reserved Connections和Test Released Connections也无需勾上。 当然如果你的数据库不稳定,时断时续,你就可能需要上述的参数打开
调优 应用描述符
WEB应用除代码之外的调优比较简单,仅仅是对一些WEB应用描述符的调整。首先关闭Session Monitoring Enabled,仅仅在Cluster环境下设置Session复制(优先使用内存复制),在保证应用正常运行的情况下,设置较短的Session超时时间。 同时生产环境下无需检查Jsp和servlet:JSPPage Check Secs和Servlet Reload Check Secs均设为-1,关闭JSP Keep Generated 和JSP Verbose对性能也有帮助。此外,还可以对jsp进行预编译,有两种方法:激活precompile选项;使用weblogic.appc事先编译,建议采用后者。
文件描述符大小调整
首先设置WEB主机系统的ulimit参数为unlimited ,然后设置WebLogic中文件描述符的大小。
在{WL_HOME}/bea/weblogic/common/bin中打开文件commEnv.sh,修改设置文件描述符大小的指令,将默认的:ulimit –n 1024修改为:ulimit –n 8192
服务
服务没有调到。
请检查tuxedo domain 与 weblogic domain连通 (参见WTC 连通性的简单检查方法),请检查xxx服务是否在weblogic里配置正确。是否配置了xxx服务。如果没有配置也会报这个错误。
请检查xxx服务在tuxedo中时候存在,如果是刚注册的xxx服务,请重现发布所在的WTC服务。如果没有重新发布,也会报这个错误。
如果tuxedo 日志显示duplicate server,表示有另外一个weblogic domain 配置相同的wtc配置。也就是说 一个Tuxedo domain 对应两个相同的Weblogic domain,这种情况,也会出现这个错误,
请修改另外weblogic domain的wtc配置。(配置相同是指 远程tuxedo访问点与本地tuxedo相同)。
如果跨防火墙,请修改连接策略 都改为ON_STARTUP
tuxedo服务有问题或输入参数不正确。
tuxedo服务返回超过了设置的时间。优化tuxedo服务或修改时间门限。
tuxedo 服务或者输入参数有问题。
饼图,柱状图)和验证码等图片在WebLogic环境中不能正常显示?在WebLogic 启动脚本中,在${JAVA_OPTIONS}后面加入 “ -Djava.awt.headless=true “,
重新启动WebLogic Server即可。
不会立即生效怎么办?首先检查Web Application 的 Descriptor 中 JSPPage Check Secs 是否设置为〉=0
JSPPage Check Secs 表示JSP会在设置的时间间隔内检查是否JSP页面是否更新。如果更新,则重新编译,生成相应的class
如果上述设置正确,则检查系统时间是否正确。
JSP页面是否更新是根据文件的日期时间。如果系统时间小于文件的生成时间。则不会更新。 比如 系统时间是 20040102 而文件的生成时间是 20050607,则怎么修改jsp页面都不会更新。
里面的静态文件、include JSP 中文显示不正常,这个问题怎么解决?在weblogic.xml文件的
Web Application 重新部署即可。
此外,在页首加入:
<%@ pagecontentType=“text/html;charset=GBK“%>
也可以解决中文显示不正常的问题。
连接池泄漏现象时,如何进行调试?观察后台日志,会看到下面信息:
打开weblogic console 中 {your-pool}-- Connections -- Advanced Options 选项卡:
这样日志就打出了发生连接池泄露的代码。检查出代码后,要记住关掉这个选择。