现在的位置: 首页 > 综合 > 正文

Weblogic服务器性能调优

2019年09月27日 ⁄ 综合 ⁄ 共 4279字 ⁄ 字号 评论关闭

Weblogic


服务器性能调优

      


注:在下面做的介绍都是以
Weblogic8.1

为例的,其它版本的
Weblogic

可能会有些许不同。

      
1)


设置
JAVA

参数;

      
a)


编辑
Weblogic Server

启动脚本文件;

l        


BEA_HOME/user_projects/domains/domain-name/startWebLogic.cmd(startWebLogic.sh on Unix)

l        


BEA_HOME/user_projects/domains/domain-name/startManagedWebLogic.cmd(startManagedWebLogic.sh on Unix)

b)

编辑
set JAVA_OPTIONS

命令,如:
set JAVA_OPTIONS=-Xms256m –Xmx256m

c)

保存,重启即可。

注:在
WebLogic

中,为了获得更好的性能,
BEA

公司推荐最小
Java

堆等于最大
Java

堆。

2)

开发模式
vs.

产品模式;

开发模式和产品模式的一些参数的默认值不同,可能会对性能造成影响,下面是对性能有影响的参数列表:

参数

开发模式默认值

产品模式默认值

Execute Queue: Thread Count

15 threads

25 threads

JDBC Connection Pool: MaxCapacity

15 connnections

25 connections

      


通过启动管理控制台,在域(如:
mydomain


>

配置
>

常规选择产品模式。

3)

尽量开启本地
I/O

通过启动管理控制台,在域(如:
mydomain


>

服务器
> server

实例(如:
myserver


>

配置
>

调整选择启用本地
I/O

注:此值也可通过手动的修改
config.xml

配置文件。

4)

调优执行队列线程;

a)

修改默认执行线程数

在这里,执行队列的线程数表示执行队列能够同时执行的操作的数量。但此值不是设的越大越好,应该恰到好处的去设置它,太小了,执行队列中将会积累很多待处理的任务,太大了,则会消耗大量的系统资源从而影响整体的性能。在产品模式下默认为
25

个执行线程。

为了设置理想的执行队列的线程数,我们可以启动管理控制台,在域(如:
mydomain


>

服务器
> server

实例(如:
myserver


>

监视
>

性能中监控最大负载时执行队列的吞吐量和队列中的等待请求数,据此确定理想的数值。

      


理想的默认执行线程数是由多方面的因素决定的,比如机器
CPU

性能、总体体系架构、
I/O

、操作系统的进程调度机制、
JVM

的线程调度机制。随着
CPU

个数的增加,
WebLogic

可以近乎线性地提高线程数。线程数越多,花费在线程切换的时间也就越多;线程数越小,
CPU

可能无法得到充分的利用。为获取一个理想的线程数,需要经过反复的测试。在测试中,可以以
25*CPU

个数为基准进行调整。当空闲线程较少,
CPU

利用率较低时,可以适当增加线程数的大小(每五个递增)。对于
PC Server


Windows 2000

,则最好每个
CPU

小于
50

个线程,以
CPU

利用率为
90%

左右为最佳。

      


通过启动管理控制台,在域(如:
mydomain


>

服务器
> server

实例(如:
myserver


> Execute Queue > weblogic.kernel.Defalt >

配置中修改线程计数。

      
b)


设定执行队列的溢出条件;

      
Weblogic Server


提供给默认的执行队列或用户自定义的执行队列自定义溢出条件的功能,当满足此溢出条件时,服务器改变其状态为“警告”状态,并且额外的再分配一些线程去处理在队列中的请求,而达到降低队列长度的目的。

      


通过启动管理控制台,在域(如:
mydomain


>

服务器
> server

实例(如:
myserver


> Execute Queue > weblogic.kernel.Defalt >

配置下面几项:

l        


队列长度:此值表示执行队列中可容纳的最大请求数,默认值是
65536

,最后不要手动改变此值。

l        



队列长度阈值百分比:此值表示溢出条件,

在此服务器指出队列溢出之前可以达到的队列长度大小的百分比。

l        



线程数增加:当检测到溢出条件时,将增加到执行队列中的线程数量。如果
CPU


和内存不是足够的高,尽量不要改变默认值“
0


”。因为
Weblogic


一旦增加后不会自动缩减,虽然最终可能确实起到了降低请求的作用,但在将来的运行中将影响程序的性能。

l        



最大线程数:为了防止创建过多的线程数量,可以通过设定最大的线程数进行控制。

在实际的应用场景中,应根据具体情况适当的调整以上参数。

c)

设定执行队列监测行为

Weblogic Server

能够自动监测到当一个执行线程变为“阻塞”。变为“阻塞”状态的执行线程将无法完成当前的工作,也无法再执行新请求。如果执行队列中的所有执行线程都变为“阻塞”状态,
Weblogic server

可能改变状态为“警告”或“严重”状态。如果
Weblogic server

变为“严重”状态,可以通过
Node Manager

来自动关闭此服务器并重新启动它。具体请参考:
Node Manager Capabilities

文档。

通过启动管理控制台,在域(如:
mydomain


>

服务器
> server

实例(如:
myserver


>

配置
>

调整下可配置下面几项:

l        



阻塞线程最长时间:

在此服务器将线程诊断为阻塞线程之前,线程必须连续工作的时间长度
(



)


。默认情况下,
WebLogic Server


认为线程在连续工作
600


秒后成为阻塞线程。

l        


阻塞线程计时器间隔:

WebLogic Server


定期扫描线程以查看它们是否已经连续工作了
"


阻塞线程最长时间
"


字段中指定的时间长度的间隔时间
(



)


。默认情况下,
WebLogic Server


将此时间间隔设置为
600


秒。

5)

调优
TCP

连接缓存数;

WebLogic Server



Accept Backlog


参数规定服务器向操作系统请求的队列大小,默认值为
50


。当系统重载负荷时
,


这个值可能过小
,


日志中报
Connection Refused,


导致有效连接请求遭到拒绝
,


此时可以提高
Accept Backlog 25%


直到连接拒绝错误消失。对于
Portal


类型的应用
,


默认值往往是不够的。
Login Timeout



SSL Login Timeout


参数表示普通连接和
SSL


连接的超时时间
,


如果客户连接被服务器中断或者
SSL


容量大
,


可以尝试增加该值。

通过启动管理控制台,在域(如:
mydomain


>

服务器
> server

实例(如:
myserver


>

配置
>

调整下可配置“接受预备连接”。

6)


改变
Java


编译器;

标准的
Java


编译器是
javac


,但编译
JSP servlets


速度太慢,为了提高编译速度,可以使用
sj



jikes


编译器取代
javac


编译器。下面说说更改
Java


编译器:

通过启动管理控制台,在域(如:
mydomain


>

服务器
> server

实例(如:
myserver


>

配置
>

常规下改变
Java


编译器
,默认为

javac

。输入完整路径,如:
c:/visualcafe31/bin/sj.exe

。然后打开高级选项,在预规划到类路径
填写

编译
Java


代码时为
Java


编译器类路径预规划的选项,如:


BEA_HOME/jdk141_02/jre/lib/rt.jar


7)


使用

Webogic Server


集群提高性能;

具体关于如何配置
Weblogic


集群,我就不细说了。详情可参考:

Introduction to WebLogic Server Clustering


8) Weblogic EJB

调优

由于
EJB2.0

已经很少项目在用了,
EJB3.0

再成熟一点,我再补充这一部分吧!

9) JDBC


应用调优

JDBC Connection Pool


的调优受制于
WebLogic Server


线程数的设置和数据库进程数
,


游标的大小。通常我们在一个线程中使用一个连接
,


所以连接数并不是越多越好
,


为避免两边的资源消耗,建议设置连接池的最大值等于或者略小于线程数。同时为了减少新建连接的开销
,


将最小值和最大值设为一致。

增加
Statement Cache Size


对于大量使用
PreparedStatement


对象的应用程序很有帮助
,WebLogic


能够为每一个连接缓存这些对象
,


此值默认为
10


。在保证数据库游标大小足够的前提下
,


可以根据需要提高
Statement Cache Size


。比如当你设置连接数为
25,Cache Size



10



,


数据库可能需要打开
25*10=250


个游标。不幸的是
,


当遇到与
PreparedStatement Cache


有关的应用程序错误时
,


你需要将
Cache Size


设置为
0



尽管
JDBC Connection Pool


提供了很多高级参数
,


在开发模式下比较有用
,


但大部分在生产环境下不需调整。这里建议最好不要设置测试表
,


同时
Test Reserved Connections



Test Released Connections


也无需勾上。


当然如果你的数据库不稳定
,


时断时续
,


你就可能需要上述的参数打开。

最后提一下驱动程序类型的选择
,



Oracle


为例
,Oracle


提供
thin


驱动和
oci


驱动
,


从性能上来讲
,oci


驱动强于
thin


驱动
,


特别是大数据量的操作。但在简单的数据库操作中
,


性能相差不大
,


随着
thin


驱动的不断改进
,


这一弱势将得到弥补。而
thin


驱动的移植性明显强于
oci


驱动。所以在通常情况下建议使用
thin


驱动。而最新驱动器由于
WebLogic server/bin


目录下的类包可能不是最新的
,


请以
Oracle


网站为准
:
http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/htdocs/jdbc9201.html




10) JSP


调优

l        



设置
jsp-param pageCheckSeconds=-1



l        



设置
serlet-reload-check=-1



ServletReloadCheckSecs=-1



l        



设置
jsp-param precompile=true


,关闭
JSP


预编译选项。

 

 

 

其它资源: http://www.chinaitpower.com/2005September/2005-09-13/206361.html

抱歉!评论已关闭.