记录一次压力测试 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/4 1.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 65536
2013/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哈哈~

我来评几句
登录后评论

已发表评论数()

相关站点

+订阅
热门文章