设置Weblogic以提高并发处理性能
1. 设置Weblogic线程数
mydomain --〉Servers --〉myserver --〉Excute Queue --〉Default
将Thread Count改为一个较大的值,如100。
2. 设置Weblogic JDBC缓冲池
mydomain --〉JDBC Conection --〉
3. 关闭Weblogic服务器
4. 修改startWeblogic.cmd文件
打开{mydomain}\startWebLogic.cmd,找到下面的行:
@rem Set MEM_ARGS to the memory args you want to pass tojava. For instance:
@rem set MEM_ARGS=-Xms32m-Xmx200m
set MEM_ARGS=
改为:
@rem Set MEM_ARGS to the memory args you want to pass to java. For instance:
@rem set MEM_ARGS=-Xms32m-Xmx200m
set MEM_ARGS=-Xms1024m-Xmx1024m-XX:MaxPermSize=128m-XX:MaxNewSize=384m-XX:NewSize=384m-XX:ThreadStackSize=4m
注意第3行是一行,中间没有换行,这里因为显示不下才变成了两行。
5. 重新启动Weblogic服务
--------------------------------------------
Weblogic性能优化-并发量
并发量的优化主要是两个队列和处理Thread数:
1、OS控制的TCP队列:存放操作系统已经接受,而Weblogic还没有接受的Socket;
2、Weblogic默认的Request队列:存放Weblogic已经接受,但是WebContainer还没有处理的Request;
3、Thread数量:Weblogic处理线程,和CPU数量及业务逻辑相关。
如果用户并发量很大,由于WebContainer的处理能力有限,会产生以下结果:
1、OS的Tcp队列满,用户的请求被拒绝,这时还没有到达Weblogic,所以Weblogic日志中没有任何记录;
2、OS的Tcp队列未满,这时用户的请求将会进入Tcp队列:
1)Weblogic处理忙,来不及接受Socket,导致连接超时,这时Weblogic日志中同样没有任何记录;
2)Socket连接被Weblogic接受进入Request队列;
3、Request队列由Thread处理,OS调度Thread,处理Request请求:
1)Request请求仍然在队列中,达到超时时间,连接中断,Weblogic日志中会记录错误信息;
2)Thread接受Request,进入OS的Thread调度队列;
4、Thread队列;
1)OS繁忙,队列中的部分Thread会超时中断,这时Weblogic日志中会记录错误信息;
2)Thread数量少,OS空闲多。
所以,优化并发量,需要遵循下列步骤:
1、调整Thread数量,使其与CPU数量相当:
1)如果Thread数量《CPU数量,就需要增加Thread数量;
2)如果Thread数量》CPU数量,并且延迟很多,就需要减少Thread数量;
2、调整OS Tcp等待队列:
1)如果客户方出现连接中断,但是Weblogic日志中没有任何信息,就增加队列长度;
2)增加幅度:每次增加25%;
3、调整程序,减少Thread处理及等待时间:
1)分割长事务,划分为多个短事务;
2)优化数据库;
3)减少远程调用;