优化默认执行队列线程
默认情况下,一个新的WebLogic实例配置了一个开发模式执行队列,weblogic.kernel.default,它包含15个线程。另外,WebLogic提供了2个预配置队列:
n weblogic.admin.HTTP——只在管理服务器上才有,这个队列供与管理控制台的通信用,你不能再配置它。
n weblogic.admin.RMI——管理服务器和被管理服务器上都有这个队列,它是供管理的交通之用,也不能再配置它。
如果你不配置额外的执行队列,并且指定应用给这些队列,web 应用程序和RMI对象就使用默认的队列eblogic.kernel.default。
注意;如果自带的执行包没有在你的平台上使用,你可能需要调整默认的执行队列线程数和担任socket读的线程的百分比,去实现最佳性能。
5.1你应该更改默认的线程数吗?
增加更多的线程到默认的执行队列并不意味着你能处理更多的工作。即使增加更多的线程,仍然被处理器的能力限制。因为线程消耗内存,所以增加线程数属性的值不必要的降低了性能。一个高的执行线程数导致更多的内存被占用并且增加了上下文转换程序,它也会降低性能。
线程数属性的值与应用程序处理的工作的类型关系密切。例如,如果你的客户应用程序比较小,通过远程调用处理的工作较多,这样,客户端会花费更多的时间连接,因此,与能完成大量客户端任务的客户应用程序相比,会需要更多的线程数。
如果你的工作不需要使用超过15个线程(开发模式默认)或者25个线程(产品模式默认),就不要改变这个属性的值。通常,如果你的应用程序访问数据库花很长时间才返回结果,与访问数据库很短时间就返回的应用程序比较,你会需要更多的执行线程。从后者来看,用少点的线程数可能提高性能。
5.2需要修改默认线程数的情形
为了给执行队列决定一个理想的线程数,当队列中所有应用程序都运行在最大负荷的情况下,监视队列的吞吐量。增加线程数,重复负载测试,直到达到最佳的吞吐量。(在某些情况下,增加线程数将产生足够多的上下文转换程序,使得队列中的吞吐量开始减少。)
注意:WebLogic管理控制台显示的是所有服务器执行队列累积的吞吐量。为了得到这个值,后面将会介绍。
下表列出了在WebLogic 域中调整的线程及与CPU数量相关的情形,这些情况也假定WebLogic运行在最大负荷下,并且使用默认的执行队列满足所有的线程的请求。如果你配置了额外的执行队列并指派了应用程序到具体的队列,就需要依据一个个连接池得到结果。