weblogic性能优化的相关设置
为得到高性能的吞吐量,把Java堆的最小值与最大值设为相等。如:
"%JAVA_HOME%\bin\java" -hotspot -Xms512m -Xmx512m -classpath %CLASSPATH% -
在一个WebLogic域中,配置文件(config.xml)位于与管理服务器通信的机器里,提供WebLogic MBean的长期存储。管理服务器作为连接的中心点,为服务实例与系统管理工具提供服务。域也可以包括其他的WebLogic实例,称之为从服务,主要为应用程序提供服务。
ExecuteQueue//执行队列缺省处理线程数
ThreadsIncrease //线程增量,以支援溢出,减缓执行队列的负荷量
ThreadsMaximum //处理中的最大线程数
Execute Queues
默认的执行线程为15。
默认的执行线程为25。
如果你不配置额外的执行队列,并且指定应用给这些队列,web 应用程序和RMI对象就使用默认的队列weblogic.kernel.default。
注意;如果自带的执行包没有在你的平台上使用,你可能需要调整默认的执行队列线程数和担任socket读的线程的百分比,去实现最佳性能。
为了给执行队列决定一个理想的线程数,当队列中所有应用程序都运行在最大负荷的情况下,监视队列的吞吐量。增加线程数,重复负载测试,直到达到最佳的吞吐量。(在某些情况下,增加线程数将产生足够多的上下文转换程序,使得队列中的吞吐量开始减少。)
注意:WebLogic管理控制台显示的是所有服务器执行队列累积的吞吐量。
设置理想的执行队列的线程数,我们可以启动管理控制台,在域(如:mydomain)> 服务器 > server实例(如:myserver)> 监视 > 性能中监控最大负载时执行队列的吞吐量和队列中的等待请求数,据此确定理想的数值。
n 队列长限制百分比(Queue Length Threshold Percent):达到队列长度百分比(1-99)时,就构成了溢出条件的产生。实际队列大小在限制的百分比之下时才被认为是正常的;在限制百分比之上就会产生溢出。当出现溢出,WebLogic日志就会产生一个错误消息,并且按线程数增量(Threads Increase)属性的值增加线程数,以帮助减少负载量。
默认的队列长限制百分比为90%。一般情况下,应保留90%或其左右,以应对一些潜在的情况,使得有额外的线程可以去处理一些请求中的异常。记住,队列长度限制百分比不是一定作为自动优化参数――因为正常运作情况下,这个限度从不会被触发。
n 线程数(Thread Count):指派到这个队列的线程数。如果你不需要使用超过15个线程(默认),就不必更改这个属性值。
n 线程数增量(Threads Increase):是指WebLogic探测到有溢出时,增加到执行队列的线程数。当你指定为0(默认),出现溢出时,WebLogic会把运行良好状态改为"警告",而且也不会指派额外的线程去减少负荷量。如果CPU和内存不是足够的高,尽量不要改变默认值"0"。因为Weblogic一旦增加后不会自动缩减,虽然最终可能确实起到了降低请求的作用,但在将来的运行中将影响程序的性能。
注意:如果WebLogic实例的线程数响应了溢出,那么这些额外的线程就会滞留在执行队列,直到服务器重启。监视错误日志,以判断溢出产生的原因,以便根据需要重配置线程数,防止以后类似情况产生。不要同时使用线程数增量和队列长限制百分比作为自动优化的手段。如此做通常结果会产生比正常需要还多的线程被指派到执行队列,这样上下文转化程序的增多会使服务器遭受很差的性能。
n 最大线程数:是指执行队列中能运行的,这个值保护WebLogic为了响应频繁溢出,创建过多的线程数。默认情况下,最大线程数为400。
n 堵塞线程最大时间(Stuck Thread Max Time):输入秒数,线程一定是不断的运行,服务器才会诊断这个线程作为堵塞。默认情况下,WebLogic认为线程连续不断运行600秒后置为堵塞。
n 堵塞线程时间间隔(Stuck Thread Timer Interval):输入秒数,这个时间是WebLogic周期性的扫描线程以察觉它们是否连续不断运行了某一线程的时间达到通过堵塞线程最大时间属性指定的时间长度。默认时间间隔为600秒。
Config.xml文件中的元素接受缓存数(AcceptBacklog)属性是用来设定请求WebLogic实例的连接数,在拒绝额外的请求之前,能接受设定的缓存数。AcceptBacklog属性指定有多少TCP连接缓存在等待队列,规定服务器向操作系统请求的队列大小,这个固定的队列存放了TCP堆栈已经收到但应用程序还没有收到的连接请求。默认值是50,最大值由操作系统决定。
根据需要修改默认的接受缓存数(Accept Backlog):
n 在运行期间,如果许多客户端连接得不到响应或被拒绝,并且服务器端也没有错误消息,说明接受缓存的值可能太小。
n 在你访问WebLogic时,如果收到"拒绝连接(connection refused)"的提示,则应该增加接受缓存的默认值的25%。继续增加其值的25%,直到停止出现这样的提示。
对于Portal类型的应用,默认值往往是不够的。Login Timeout和SSL Login Timeout参数表示普通连接和SSL连接的超时时间,如果客户连接被服务器中断或者SSL容量大,可以尝试增加该值。
虽然Web应用程序的处理需求变化多端,但BEA公司发现WebLogic实例与CPU最理想的比例是1:2。