记录一次压力测试 weblogic 11g 调优过程最近做一项目,记录下,供大家参考,也供自己以后查阅:) OS:Linux gd
记录一次压力测试 weblogic 11g 调优过程
最近做一项目,记录下,供大家参考,也供自己以后查阅:)
OS:Linux gdap1 2.6.18-194.1.AXS3 #1 SMP Fri May 7 10:03:53 CST 2010 x86_64 x86_64 x86_64 GNU/Linux
weblogic版本:10.3.6.0,采用集群模式
jdk:jrockit-jdk1.6.0_31-R28.2.3-4.1.0
日期问题描述调整项2013/1/30启动压力测试后,事务约:1个左右每秒,经修改 调整weblogic启动 JVM 参数 JAVA_OPTIONS,事务数据能达到4个左右;1.调整weblogic启动 JVM 参数,在 JAVA_OPTIONS中增加: -Dweblogic.threadpool.MinPoolSize=200 -Dweblogic.threadpool.MaxPoolSize=500
2.修改weblogic jdbc:domain->服务->数据源->loan->连接池->(初始容量:100, 最大容量:200, 最小容量:100)2013/2/41.VU用户并发能到达5个,事务平均数为4.78左右,增加再多VU,事务数不会增加,跟踪jrockit飞行记录,发现有争用现象,
javacommon.struts2.interceptor.SharedRenderVariableInterceptor 经排查是strus中有同步记录事务数,导致线程等待。经调整后,能提升到每秒15个事务左右;
1)修改easyloan.war\WEB-INF\classes\struts.xml:把如下内容注释掉:
<!--
<interceptors>
<interceptor name="sharedRenderVariableInterceptor"
class="javacommon.struts2.interceptor.SharedRenderVariableInterceptor"/>
<interceptor-stack name="customDefaultCrudStack">
<interceptor-ref name="paramsPrepareParamsStack"/>
<interceptor-ref name="sharedRenderVariableInterceptor"/>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="customDefaultCrudStack"/>
--!>
2) 把 easyloan.war\WEB-INF\classes\struts.xml修改:
<constant name="struts.devMode" value="false"/> <!-- 开发模式设置为false --!>
3) 修改 easyloan.war\WEB-INF\classes\spring\applicationContext-service.xml 如下:
default-autowire="byName" default-lazy-init="false" <!-- 惰性加载,调整参数为false --!>
4).向 easyloan.war\WEB-INF\classes\configuration.xml 文件的 <configuration>中增加如下:
<settings>
<setting name="lazyLoadingEnabled" value="false"/>
<setting name="aggressiveLazyLoading" value="fasle"/>
<setting name="defaultExecutorType" value="REUSE"/>
</settings>2013/2/18前端LR显示只能达到并发用户约10个,tps到达40左右;服务器端经观察发现GC无法回收,并且后续tps下降到约5个左右;1.Weblogic32位,JDK64位,经调整为weblogic32位和 weblogic 自带的32位JDK,内存为2G,性能提升约100倍(TPS:600,响应时间:0.37秒)2013/2/20从开始执行性能测试以来,LR前端显示 tps最高到达40左右,无法再增涨。今天拷贝jrockit33 64bit,和jrockit22 64bit;安装jrockit-jdk1.6.0_22-R28.1.1-4.0.1,性能明显提升,tps最高到达970; 2013/2/22压力测试时,流量过大,约60M/s修改,easyloan.war\WEB-INF\web.xml,把<!--GZIP filter …!> 去掉,以便压缩流量,但会增加CPU运算;2013/2/26经过长时间使用,主机报:“cannot set user id: 资源暂时不可用,系统资源分配不够”;所有应用主机修改如下:
[loanapp@gdap1 ~]$ cat /etc/security/limits.conf |grep loanapp
#loanapp soft nproc 2047
loanapp soft nproc 10240
loanapp hard nproc 16384
loanapp soft nofile 65535
loanapp hard nofile 655362013/3/5集群环境中存在,随着压力测试时间增长,主机资源利用率逐渐下降,调整后问题解决在setDomainEnv.sh/中增加如下启动参数:
JAVA_OPTIONS="${JAVA_OPTIONS} -Xgc:throughput -XX:+HeapDumpOnCtrlBreak -XX:+HeapDumpOnOutOfMemoryError -XXgcthreads:32"
JAVA_OPTIONS="${JAVA_OPTIONS} -Dweblogic.threadpool.MinPoolSize=100 "2013/3/5集群环境存在队列等待,经打补丁包后解决;Weblogic1036-Patches
经调优后,具体java启动参数如下:
/app/weblogic/jrockit-jdk1.6.0_22-R28.1.1-4.0.1/bin/java
-jrockit 使用jrockit
-Xms4096m 最小堆 建议与最大堆设置成一致;
-Xmx4096m 最大堆
-Xns1024m 新生代的空间大小,建议1/4最大堆大小
-Dweblogic.ProductionModeEnabled=true 开启生产模式
-Xgc:throughput GC模式:按吞吐量进行GC
-XXgcthreads:32 最大GC线程
-XX:+HeapDumpOnCtrlBreak 当 dump 时,生成dump文件
-XX:+HeapDumpOnOutOfMemoryError 当内存溢出时,生成dump文件
-Dweblogic.threadpool.MinPoolSize=100 最小线程池大小;
-Dweblogic.ext.dirs=/app/weblogic/Oracle/Middleware/patch_wls1036/profiles/default/sysext_manifest_classpath:/app/weblogic/Oracle/Middleware/patch_ocp371/profiles/default/sysext_manifest_classpath 补丁路经
小意思记录:
在最后几天压力测试(混合场景)时,发现DB库cpu资源达到 100%,我们的开发大拿,在没有停止压力测试过程中把他们所有需要建立索引的sql语句执行一次,DB资源突然就下降到5%左右。 O(∩_∩)O哈哈~