优化WebLogic

优化 WebLogic 服务器性能参数
WebLogic 配置文件(config.xml)包含了大量很直观的与性能有关的参数,能通过配置环境与应用程序得到很好的优化。基于系统的需要调整这些参数不仅能改善单个点的性能,而且能提高整个应用程序性能的可衡量性。
试着采用下列WebLogic配置方法,或许能使你的系统达到最佳状态:
一 修改运行队列线程数的值。在WebLogic 中队列元素的线程数等于同时占用运行队列的应用程序的数目。当任务加入一个WebLogic 实例,它就被放到执行队列中,然后分配给任务一个线程来运行。线程消耗资源,因此要小心处理这个属性——增加不需要的值,会降低性能。
二,如果可能,使用自带的性能包(NativeIOEnabled=true)。
三,使用特定的应用程序执行队列。
四,使用JDBC连接池时,修改下列属性:
n         驱动名称:使用小的驱动或者jDriver。
n         初始容量:设为与最大容量相同的值。
n         最大容量:其值至少应与线程数相同。
五,把连接池的大小设为与执行队列的线程数相同。
六,设置缓冲。
七,为Servlet和JSP使用多个执行队列。
八,改变JSP默认的Java编译器,javac 比jikes或sj要慢。
 
优化 WebLogic
提要:
n          WebLogic 启动设置 Java 参数。
n          设置与性能有关的配置参数。
n          调整开发与产品模式默认值。
n          使用 WebLogic “自有的 IO ”性能包。
n          优化默认执行队列线程。
n          优化连接缓存。
n          如何提高 JDBC 连接池的性能。
n          设置 Java 编译器。
n          使用 WebLogic 集群提高性能。
n          监视 WebLogic 域。
一、为 WebLogic 启动设置 Java 参数
只要启动 WebLogic ,就必须指定 Java 参数,简单来说,通过 WebLogic.Server 域的命令行就可以完成,不过,由于这样启动的过程冗长并且易于出错, BEA 公司推荐你把这个命令写进脚本里。为了简化这个过程,你可以修改样例脚本里的默认值,样例脚本是提供 WebLogic 启动服务器的。
如果你用配置向导创建你的域, WebLogic 启动脚本( startWebLogic.cmd )放在 domain-name 目录里。默认情况下,这个目录是 BEA_HOME\user_projects\domain\domain-name BEA_HOME 表示安装路径, domain-name 是在配置模板中设置的域名称。
你需要在这个脚本中修改一些默认的 Java 参数值,使之适合你的应用环境和程序。在这个文件中主要的性能参数是 JAVA_HOME Java 堆的大小。
n          JAVA_HOME 的值为 JDK 所在的位置,如:
set JAVA_HOME=C:\bea\jdk141_03
n          为得到高性能的吞吐量,把 Java 堆的最小值与最大值设为相等。如:
"%JAVA_HOME%\bin\java" -hotspot -Xms512m -Xmx512m -classpath %CLASSPATH% -
二、设置与性能有关的配置参数
在一个 WebLogic 域中,配置文件( config.xml )位于与管理服务器通信的机器里,提供 WebLogic MBean 的长期存储。管理服务器作为连接的中心点,为服务实例与系统管理工具提供服务。域也可以包括其他的 WebLogic 实例,称之为从服务,主要为应用程序提供服务。
当启动管理服务器是,首先读域配置文件,然后跳过建立在配置文件中管理 MBean 默认的属性值,每一次用系统管理工具(不管是命令行界面还是管理控制台)改变一个属性值,它都会被存到相应的管理 MBean ,并且写进配置文件。
下表列出了 config.xml 文件中影响服务器性能的参数。
元素
属性
控制台标签
备注
Server
NativeIOEnabled
Native IO Enabled
 
ExecuteQueue
ThreadCount
Thread Count
 
ExecuteQueue
QueueLength
QueueLengthThresholdPercent
ThreadsIncrease
ThreadsMaximum
ThreadPriority
Queue Length
Queue Length Threshold Percent
(队列长限度百分比)
Threads Increase
Threads Maximum
Thread Priority
 
Server
StuckThreadMaxTime
StuckThreadTimerInteral
Stuck Thread Max Time
(堵塞线程的最长时间)
Stuck Thread Timer Interval
(堵塞线程的时间间隔)
 
Server
ThreadPoolPercentSocketReaders
Socket Readers
 
Server
AcceptBacklog
Accept Backlog
(接受缓存数)
 
JDBCConnectionPool
InitialCapacity
MaxCapacity
Initial Capacity
Max Capacity
 
JDBCConnectionPool
StatementCacheSize
Statement Cache Size
(声明高速缓冲大小 )
 
 
三、调整开发模式与产品模式默认值
你可以指定域为开发环境或为产品环境。 WebLogic 会根据你指定的环境类型使用不同的默认值提供不同的服务。
下表列出了两种模式下的默认值
优化参数
开发模式
产品模式
Execute Queue: ThreadCount
15 threads
25 threads
JDBC Connection Pool: MaxCapacity
15 connections
25 connections
3 1 更改运行时模式
在创建了一个域后,按下列步骤可以更改域里所有服务的的运行时模式:
 
1 .为更改运行在一个 WebLogic 主机上的所有域的运行时模式,用文本编辑器打开 WL_HOME\common\bin\commEnv.cmd(Windows) 或者 WL_HOME\common\bin\commEnv.sh (UNIX) WL_HOME 是安装 WebLogic 的路径。
为指定的域更改运行时模式,就用文本编辑器打开 domain-name \StartWebLogic.cmd (Windows) or domain-name\StartWebLogic.sh (UNIX) domain-name 为创建的域的目录。
2 .在这个脚本中,更改 PRODUCTION_MODE 的值,如果你要服务器运行在产品模式,指定其值为 TRUE
3 .重启所有的服务器。
3 2 两种模式的不同
下表列出了开发模式与产品模式几种关键项的区别:
功用名称
开发模式
产品模式
SSL
你可以使用 WebLogic 安全服务提供的验证数字证书。有这些证书,你开发的应用程序会在 SSL 保护的环境下运行。
如果你使用验证数字证书,会收到警告信息。
部署应用程序
WEBLOGIC 实例会自动部署和更新位于 domain_name/applications 目录下的应用程序( domain_name 为域的名称)。
不能使用自动部署功能,必须使用 WebLogic 控制台或者 WebLogiceblogic Deployer 工具。
Log File Rotation
启动服务器后,服务器自动重命名本地日志文件为 server-name.log.n ,为了滞留的 session ,只要日志文件的达到 500kb ,日志文件就会滚转一次。
当日志文件达到 500kb ,就会滚转。
Execute Queues
默认的执行线程为 15
 
默认的执行线程为 25
JDBC Connection Pool Capacity
默认的容量为 15
默认的容量为 25
四、使用WebLogic“自有的IO”性能包
当你使用自有的性能包,测试基准就表明了主要性能的提高。性能包采用最优化的平台及多线程的 Socket 去提高服务器的性能。例如,本地 Socket 读的多线程有自己的执行队列而不需要借用默认的执行队列线程,这样可以让默认执行线程很从容去处理应用程序。
不过,如果你一定要用纯 Java socket 读在主机上运行,你仍然可以通过配置每个服务器实例和客户机中适当的 socket 读的线程数量,来提高 socket 通信的性能。
设置性能包的操作方法:
默认情况下,装载在 config.xml 中的是自有的性能包。为了验证这个设置,在配置文件中检查 NativeIOEnabled 属性是否设为“ true ”( NativeIOEnabled=true )。
你也可以通过管理控制台来验证,步骤如下:
1     启动管理服务器。
2     访问管理控制台。
3     展开左边面板的 Servers 节点,显示域服务。
4     点击你要配置的服务实例。
5     选择 Configuration >Tuning tab
6     如果 Enable Native IO 复选框没有被选择,选中即可。
7     点击 Apply
8     重启服务器。
 
 
五、优化默认执行队列线程
默认情况下,一个新的 WebLogic 实例配置了一个开发模式执行队列, weblogic.kernel.default, 它包含 15 个线程。另外, WebLogic 提供了 2 个预配置队列:
n        weblogic.admin.HTTP ——只在管理服务器上才有,这个队列供与管理控制台的通信用,你不能再配置它。
n        weblogic.admin.RMI ——管理服务器和被管理服务器上都有这个队列,它是供管理的交通之用,也不能再配置它。
如果你不配置额外的执行队列,并且指定应用给这些队列, web 应用程序和 RMI 对象就使用默认的队列 weblogic.kernel.default
注意;如果自带的执行包没有在你的平台上使用,你可能需要调整默认的执行队列线程数和担任 socket 读的线程的百分比,去实现最佳性能。
5 1 你应该更改默认的线程数吗 ?
增加更多的线程到默认的执行队列并不意味着你能处理更多的工作。即使增加更多的线程,仍然被处理器的能力限制。因为线程消耗内存,所以增加线程数属性的值不必要的降低了性能。一个高的执行线程数导致更多的内存被占用并且增加了上下文转换程序,它也会降低性能。
线程数属性的值与应用程序处理的工作的类型关系密切。例如,如果你的客户应用程序比较小,通过远程调用处理的工作较多,这样,客户端会花费更多的时间连接,因此,与能完成大量客户端任务的客户应用程序相比,会需要更多的线程数。
如果你的工作不需要使用超过15个线程(开发模式默认)或者25个线程(产品模式默认),就不要改变这个属性的值。通常,如果你的应用程序访问数据库花很长时间才返回结果,与访问数据库很短时间就返回的应用程序比较,你会需要更多的执行线程。从后者来看,用少点的线程数可能提高性能。
5 2 需要修改默认线程数的情形
为了给执行队列决定一个理想的线程数,当队列中所有应用程序都运行在最大负荷的情况下,监视队列的吞吐量。增加线程数,重复负载测试,直到达到最佳的吞吐量。(在某些情况下,增加线程数将产生足够多的上下文转换程序,使得队列中的吞吐量开始减少。)
注意: WebLogic 管理控制台显示的是所有服务器执行队列累积的吞吐量。为了得到这个值,后面将会介绍。
下表列出了在WebLogic 域中调整的线程及与CPU数量相关的情形,这些情况也假定WebLogic运行在最大负荷下,并且使用默认的执行队列满足所有的线程的请求。如果你配置了额外的执行队列并指派了应用程序到具体的队列,就需要依据一个个连接池得到结果。
如果…
结果
应该:
线程数<CPU的数量
线程数太少,如果:
CPU 正等着工作,但有工作被完成。
CPU 利用率不能达到100%。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值