weblogic服务器优化配置详解

发布时间 : 星期一 文章weblogic服务器优化配置详解更新完毕开始阅读

5.8分配执行队列担任Socket读

为了获得更好的socket性能,BEA 推荐你使用自有的socket读执行工具,它更优于纯Java执行工具。然而,如果你一定要在主机上用纯Java 的socket读,你仍然可以通过配置恰当的执行线程数以提高socket通信性能,为每个服务器实例和客户机器担负socket读线程的任务。

Socket读占线程池百分比(ThreadPoolPercentSocketReader)属性可以设置用来从socket读消息的执行线程的最大百分比。这个属性的最优值是根据应用程序的需要指定的。默认值是33,有效范围在1-99之间。

分配执行线程担任socket读增加了服务器处理速度和接受客户请求的能力。有必要平衡执行线程数,使其专注于从socket读消息,也有必要平衡那些在服务器处理实际任务的执行线程。

5.9为服务器实例设置socket读的线程数的操作

1.启动管理服务器,访问域控制台。

2.展开左边面板Servers节点,显示域服务配置。 3.点击你要配置的服务名称。

4.选择配置(Configuration)――>调整(Tuning)标签。

5.Socket Reader中编辑Java读线程的百分比。Java socket读线程数是根据所有的执行线程数的百分比计算得到的。

6.应用(Apply)这个调整。

5.10在客户机设置Socket读线程数

在客户机上,你可以配置运行在JVM(Java虚拟机)上的socket读线程数。指定Socket读,需要通过用java命令行定义下列参数:

-Dweblogic.ThreadPoolSize=value

-Dweblogic.ThreadPoolPercentSocketReaders=value

5.11优化溢出情况时的执行队列

你可以配置WEBLOGIC监测并且随时应对潜在的溢出,不管其发生在默认的执行队列还是用户定义的队列。一旦当前队列大小快达到用户定义的百分比,WebLogic认为队列中有一个可能的溢出产生。

当这个限度到达时,服务器改变它的良好状态为“警告”,随即分配额外的线程去处理超负荷的工作,从而还原它的大小。

为了自动监测和应对溢出,你可以配置以下项:

1.队列长限制百分比,这个值是队列大小的百分比。

2.当溢出发生时,增加到队列的线程数。这些额外的线程以还原队列到正

常的运行的大小。

3.线程的最大数,在特殊情况下,线程最大数用来保护服务器在响应过载情况下过度分配线程数。

5.12优化执行队列的监测行为

当一个线程在队列中变成堵塞状态时,WebLogic会自动监测到。因为堵塞线程不能完成它当前的工作或接受新的工作,服务器每次诊断一个堵塞线程,就记入一个消息到日志中。如果一个队列中所有的线程变成堵塞,服务器改变良好状态成“警告”或者“危机”,依赖于下列情况:

· 如果默认队列中所有的线程变成堵塞,服务器状态变成“危机”。(你可

以设立节点管理器(Node Manager)应用去自动关闭及重启服务器。) · 如果在weblogic.admin.HTTP, weblogic.admin.RMI或用户定义的队列中所

有线程变成堵塞,服务器状态变成“警告”。

WebLogic诊断到一个堵塞线程,如果它是在指定的时间内连续不断的工作(没有空闲)。你可以调整服务器线程监测行为,它是通过改变堵塞线程被诊断前的时间长度和服务器核查堵塞线程的频率。

注意:尽管你能改变标准WebLogic去决定一个线程是否堵塞,但,你不能改变默认行为,就是出现堵塞时把服务器设置成“警告”或“危机”的行为。

配置WebLogic堵塞线程监测行为的步骤: 1.启动WebLogic,访问管理控制台。

2.点击你想为改善堵塞线监测而修改的服务器实例的名称。 3.选择配置(Configuration)――>调整(Tuning)标签。 4.修改下列参数:

· 堵塞线程最大时间(Stuck Thread Max Time):输入秒数,线程一定是不

断的运行,服务器才会诊断这个线程作为堵塞。默认情况下,WebLogic认为线程连续不断运行600秒后置为堵塞。

· 堵塞线程时间间隔(Stuck Thread Timer Interval):输入秒数,这个时间

是WebLogic周期性的扫描线程以察觉它们是否连续不断运行了某一线程的时间达到通过堵塞线程最大时间属性指定的时间长度。默认时间间隔为600秒。

5.应用(Apply)设置。 6.重启服务器。

六、优化连接缓存

Config.xml文件中的元素接受缓存数(AcceptBacklog)属性是用来设定请求WebLogic实例的连接数,在拒绝额外的请求之前,能接受设定的缓存数。AcceptBacklog属性指定有多少TCP连接缓存在等待队列,这个固定的队列存放了TCP堆栈已经收到但应用程序还没有收到的连接请求。默认值是50,最大值由操作系统决定。

在控制台调整接受缓存数的步骤: 1.启动WebLogic,访问控制台。 2.展开左边面板Servers节点。

3.点击你要配置的服务器实例的名称。

4.选择配置(Configuration)――>调整(Tuning)标签。 5.根据需要修改默认的接受缓存数(Accept Backlog):

· 在运行期间,如果许多客户端连接得不到响应或被拒绝,并且服务器端

也没有错误消息,说明接受缓存的值可能太小。

· 在你访问WebLogic时,如果收到“拒绝连接(connection refused)”的

提示,则应该增加接受缓存的默认值的25%。继续增加其值的25%,直到停止出现这样的提示。 6.点击应用(Apply),保存设置。

七、如何提高JDBC连接池的性能

创建一个带DBMS的JDBC连接是非常慢的。如果应用程序需要数据库不断的连接和断开,这种创建方式会造成一个重大的性能问题。WebLogic连接池提供了一种高效的解决方案来解决这个问题。

当启动WebLogic,就打开连接池,以便于所有客户连接。当一个客户关闭一个连接,这个连接就返回到连接池,供其他的客户使用。连接本身不会关闭。如此就用极少的代价实现了连接和断开连接池。

在连接池里应该创建多少连接呢?连接池会根据配置参数中的最大数与最小数之间增加或减少连接。最好的性能应该是连接数与当前客户会话(Session)数相同。

7.1调整JDBC连接池的初始容量

在配置连接池时, JDBCConnectionPool元素中的InitialCapacity属性能设定连接数,创建物理的数据库连接。如果服务器不能创建这个连接数,连接池的创建就会失败。

在开发期间,为了使服务器启动更快,可以很方便的设置InitialCapacity属性的值小一点。在产品系统中,就应该把InitialCapacity的值设为与MaxCapacity值相同,默认产品模式的值为25。这样,在服务器启动时,所有的连接就会被创建。如果你调整了MaxCapacity值后,一定要确信InitialCapacity值设置与MaxCapacity值相同。

如果InitialCapacity比MaxCapacity值少,当负荷增加时,服务器需要创建额外的数据库连接。当服务器处于低负荷时,所有的资源应该是尽快的完成请求,而不是创建新的数据库连接。

7.2调整JDBC连接池的最大容量

JDBCConnectonPool元素中的MaxCapacity属性设置连接池包含的最大的物理数据库连接数。不同的JDBC驱动程序和数据库服务器可能限制物理连接数。

默认的最大容量数与默认的线程数相等:开发模式为15,产品模式为25。不过,在产品模式下,建议连接数与当前的客户会话(Session)数相等。在服务

器端,连接池的容量与执行线程数是无关的,正在进行的用户会话比执行线程更多。

八、设置Java编译器

编译JSP Servlet的标准Java编译器是javac。你可以把java编译器设置为si或jikes代替javac,这样能极大的提高性能。下面讨论设置步骤及其要考虑的事项。

8.1通过控制台改变编译器

1.启动服务器,访问控制台。 2.展开左边面板Servers节点。

3.点击要配置的服务器实例的名称。

4.选择配置(Configuration)――>常规(General),在Java Compiler编辑框输入编译器的完全路径。如:c:\\visualcafe31\\bin\\sj.exe

5.点击高级选项(Advanced Option)――>Show,显示其他的属性。 6.用添加(Append)把完全路径通过Classpath框输入到JRE rt.jar 库。如:BEA_HOME\\jdk141_02\\jre\\lib\\rt.jar

7.点击应用。 8.重启服务器。

8.2在Weblogic.xml文件中设置编译器

· 使用compileCommand参数指定Java编译器。

· 使用procompile参数配置WebLogic,在启动WebLogic时预编译JSP。

8.3编译EJB容器类

使用Weblogic.appc的功能去编译EJB2.0和1.1容器类。如果编译Jar文件部署EJB容器,你必须使用weblogic.appc生成容器类。默认情况下,EJB使用javac编译器。为了得到跟好的性能,使用-compiler标志指定不同的编译器(如Symantec公司的sj)

8.4在UNIX环境下编译

在UNIX机器上编译JSP文件,如果收到下列错误消息: failed:java.io.IOException:Not enough space 试试下列一些或所有的解决方法:

· 如果你只有256MB的内存,增加更大的内存。 · 提高文件描述文件的限制,如:

联系合同范文客服:xxxxx#qq.com(#替换为@)