Weblogic8.1 的性能优化

注:在下面作的介绍都是以Weblogic8.1为例的,其它版本的Weblogic可能会有些许不一样。html

1) 设置JAVA参数;java

a) 编辑Weblogic Server启动脚本文件;node

BEA_HOMEuser_projectsdomainsdomain-namestartWebLogic.cmd(startWebLogic.sh on Unix)web

BEA_HOMEuser_projectsdomainsdomain-namestartManagedWebLogic.cmd(startManagedWebLogic.sh on Unix)sql

b) 编辑set JAVA_OPTIONS命令,如:set JAVA_OPTIONS="-Xms256m —Xmx256m;数据库

c) 保存,重启便可。缓存

注:在WebLogic中,为了得到更好的性能,BEA公司推荐最小Java堆等于最大Java堆。服务器

2) 开发模式vs. 产品模式;架构

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

参数

开发模式默认值

产品模式默认值

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 > 配置下面几项:

队列长度:此值表示执行队列中可容纳的最大请求数,默认值是65536,最后不要手动改变此值。

队列长度阈值百分比:此值表示溢出条件,在此服务器指出队列溢出以前能够达到的队列长度大小的百分比。

线程数增长:当检测到溢出条件时,将增长到执行队列中的线程数量。若是CPU和内存不是足够的高,尽可能不要改变默认值“0”。由于Weblogic一旦增长后不会自动缩减,虽然最终可能确实起到了下降请求的做用,但在未来的运行中将影响程序的性能。

最大线程数:为了防止建立过多的线程数量,能够经过设定最大的线程数进行控制。

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

c) 设定执行队列监测行为

Weblogic Server可以自动监测到当一个执行线程变为“阻塞”。变为“阻塞”状态的执行线程将没法完成当前的工做,也没法再执行新请求。若是执行队列中的全部执行线程都变为“阻塞”状态,Weblogic server可能改变状态为“警告”或“严重”状态。若是Weblogic server变为“严重”状态,能够经过Node Manager来自动关闭此服务器并从新启动它。具体请参考:Node Manager Capabilities文档。

经过启动管理控制台,在域(如:mydomain)> 服务器> server实例(如:myserver)>配置> 调整下可配置下面几项:

阻塞线程最长时间:在此服务器将线程诊断为阻塞线程以前,线程必须连续工做的时间长度(秒)。默认状况下,WebLogic Server 认为线程在连续工做600 秒后成为阻塞线程。

阻塞线程计时器间隔: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:visualcafe31insj.exe。而后打开高级选项,在预规划到类路径填写编译Java 代码时为Java 编译器类路径预规划的选项,如:BEA_HOMEjdk141_02jrelib t.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调优

设置jsp-param pageCheckSeconds="-1;

设置serlet-reload-check="-1或ServletReloadCheckSecs=-1;

设置jsp-param precompile="true,关闭JSP预编译选项。

相关文章
相关标签/搜索