当前位置:文档之家› weblogic性能优化

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_pr ojects\domain\domain-name,BEA_HOME表示安装路径,domain-nam e是在配置模板中设置的域名称。

备不过,如果你一定要用纯Java socket读在主机上运行,你仍然可以通过配置每个服务器实例和客户机中适当的socket读的线程数量,来提高socket 通信的性能。

设置性能包的操作方法:默认情况下,装载在config.xml中的是自有的性能包。

为了验证这个设置,在配置文件中检查NativeIOEnabled属性是否设为“true”(NativeIOEnable d=true)。

你也可以通过管理控制台来验证,步骤如下:1,启动管理服务器。

2,访问管理控制台。

3,展开左边面板的Servers 节点,显示域服务。

4,点击你要配置的服务实例。

5,选择Configuration->Tuning tab。

6,如果Enable Native IO复选框没有被选择,选中即可。

7,点击Apply。

8,重启服务器。

五、优化默认执行队列线程默认情况下,一个新的WebLogic实例配置了一个开发模式执行队列,we blogic.kernel.default,它包含15个线程。

另外,WebLogic提供了2个预配置队列:n weblogic.admin.HTTP——只在管理服务器上才有,这个队列供与管理控制台的通信用,你不能再配置它。

n weblogic.admin.RMI——管理服务器和被管理服务器上都有这个队列,它是供管理的交通之用,也不能再配置它。

如果你不配置额外的执行队列,并且指定应用给这些队列,web 应用程序和RMI对象就使用默认的队列weblogic.kernel.default。

注意;如果自带的执行包没有在你的平台上使用,你可能需要调整默认的执行队列线程数和担任socket读的线程的百分比,去实现最佳性能。

5.1你应该更改默认的线程数吗?增加更多的线程到默认的执行队列并不意味着你能处理更多的工作。

即使增加更多的线程,仍然被处理器的能力限制。

因为线程消耗内存,所以增加线程数属性的值不必要的降低了性能。

一个高的执行线程数导致更多的内存被占用并且增加了上下文转换程序,它也会降低性能。

线程数属性的值与应用程序处理的工作的类型关系密切。

例如,如果你的客户应用程序比较小,通过远程调用处理的工作较多,这样,客户端会花费更多的时间连接,因此,与能完成大量客户端任务的客户应用程序相比,会需要更多的线程数。

如果你的工作不需要使用超过15个线程(开发模式默认)或者25个线程(产品模式默认),就不要改变这个属性的值。

通常,如果你的应用程序访问数据库花很长时间才返回6.填下适当的线程数。

7.点击Apply,保存刚才的修改。

8.重启服务器,使新的执行队列设置生效。

5.4指派应用程序到执行队列虽然可以配置默认的执行队列,为所有的WebLogic应用程序提供最佳的线程数,但是为关键的应用程序配置多个执行队列可以提供更多的管理控制。

通过使用多执行队列,你可以保证应用程序有权占用固定的线程数,而不管Web Logic服务器有多大的负荷。

5.5创建执行队列一个执行队列代表执行线程的命名集,线程指向一个或多个Servlet、JSP、EJB、RMI对象。

执行队列在config.xml文件中描述,作为服务器元素的一部分。

如,在config.xml文件中描述一个有4个线程的队列,命名为CriticalAp pQueue,如下:...<ServerName="examplesServer"ListenPort="7001"NativeIOEnabled="true"/><ExecuteQueue Name="default"ThreadCount="15"/><ExecuteQueue Name="CriticalAppQueue"ThreadCount="4"/>...</Server>另一种创建队列的方法是通过管理控制台,配置步骤如下:1.启动管理服务器,访问控制台。

2.展开左边面板中Servers节点,显示域中要配置的服务。

3.右击你要增加队列的服务实例,从弹出菜单中选择View Execute Queues。

4.在队列配置标签中,点击配置新执行队列链接。

5.在队列配置标签中,更改下列属性或接受系统的默认值:n线程名称(Name):你可以输入线程名称,如CriticalAppQueue。

n队列长度(Queue Length):通常保留默认值65536,队列长度表明了同时发来请求的最大数,65536个请求是个很大的数,即使达到这个最大数,也是很少见的。

如果达到最大队列长度,WebLogic会自动成倍增长队列大小,以处理额外的工作。

注意:超过65536个请求预示队列中的线程有问题,不仅仅只是队列本身的长度问题,实践表明在队列中有堵塞线程或线程数不足的情况存在。

n队列长限制百分比(Queue Length Threshold Percent):达到队列长度百分比(1-99)时,就构成了溢出条件的产生。

实际队列大小在限制的百分比之下时才被认为是正常的;在限制百分比之上就会产生溢出。

当出现溢出,WebLogic日志就会产生一个错误消息,并且按线程数增量(Threads In crease)属性的值增加线程数,以帮助减少负载量。

默认的队列长限制百分比为90%。

一般情况下,应保留90%或其左右,以应对一些潜在的情况,使得有额外的线程可以去处理一些请求中的异常。

记住,队列长度限制百分比不是一定作为自动优化参数――因为正常运作情况下,这个限度从不会被触发。

n线程数(Tread Count):指派到这个队列的线程数。

如果你不需要使用超过15个线程(默认),就不必更改这个属性值。

n线程数增量(Threads Increase):是指WebLogic探测到有溢出时,增加到执行队列的线程数。

当你指定为0(默认),出现溢出时,WebLog ic会把运行良好状态改为“警告”,而且也不会指派额外的线程去减少负荷量。

注意:如果WebLogic实例的线程数响应了溢出,那么这些额外的线程就会滞留在执行队列,直到服务器重启。

监视错误日志,以判断溢出产生的原因,以便根据需要重配置线程数,防止以后类似情况产生。

不要同时使用线程数增量和队列长限制百分比作为自动优化的手段。

如此做通常结果会产生比正常需要还多的线程被指派到执行队列,这样上下文转化程序的增多会使服务器遭受很差的性能。

n最大线程数:是指执行队列中能运行的,这个值保护WebLogic为了响应频繁溢出,创建过多的线程数。

默认情况下,最大线程数为400。

n线程优先级:线程优先级与此队列相关。

默认值为5。

6.点击Create,创建队列。

7.重启服务器。

5.6指派Servlet和JSP到执行队列你可以把servlet或JSP分配到指定的配置执行队列,只需在初始参数中标识执行队列的名称。

初始参数出现在Servert或JSP的部署描述文件web.x ml中的init-param元素里。

为了分配一个队列,可以把队列名作为wl-dispa tch-policy参数的值。

如:<servlet><servlet-name>MainServlet</servlet-name><jsp-file>/myapplication/critical.jsp</jsp-file><init-param><param-name>wl-dispatch-policy</param-name><param-value>CriticalAppQueue</param-value></init-param></servlet>5.7指派EJB和RMI对象到执行队列为了把EJB分配到指定的队列,可以使用weblogic-ejb-jar.xml文件中d ispatch-policy元素。

然而你也可以通过使用appc编译器-dispatchPolicy选项来设置派遣策略,BEA强烈推荐使用部署描述元素。

因为用这种方式,如果EJB重编译,在部署用例期间,这个设置不会被丢失。

相关主题