LoadRunner疲劳压测导致内存溢出问题解决

1、使用jconsole进行监控JVM内存使用情况,发现可以正常释放堆内存

2、配出项目复杂业务逻辑影响,直接访问index.jsp页面

并发为2时,TPS:120  内存正常释放

 

并发为4时,TPS:200  内存释放慢,导致内存溢出

从而使TPS一直下降,说明有内存未来得及释放,导致内存溢出

 

3、监控内存溢出数据

export JAVA_OPTS="$JAVA_OPTS -XX:+HeapDumpOnOutOfMemoryError"

在weblogic启动参数中添加“-XX:+HeapDumpOnOutOfMemoryErro”令系统出现内存溢出时,生成heapdump文件,以便分析引发内存溢出的原因

一、 系统环境参数

Weblogic

<?xml version="1.0" encoding="UTF-8"?>
<bea-product-information xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:gpr="http://www.bea.com/ns/cie/gpr">
  <host home="/home/mw/weblogic/Oracle/Middleware" name="alipayap01">
    <product format="1.0" name="WebLogic Platform">
      <release level="10.3" ServicePackLevel="6" PatchLevel="0" Status="installed" InstallTime="Feb 26, 2016 10:43:17 AM" InstallDir="/home/mw/weblogic/Oracle/Middleware">
        <component name="Common Infrastructure Engineering" version="7.4.0.0" InstallDir="">
          <component name="Uninstall"/>
          <component name="Patch Client"/>
          <component name="Patch Attachment Facility"/>
          <component name="Clone Facility"/>
        </component>
        <component name="WebLogic Server" version="10.3.6.0" InstallDir="/home/mw/weblogic/Oracle/Middleware/wlserver_10.3">
          <component name="Core Application Server"/>
          <component name="Administration Console"/>
          <component name="Configuration Wizard and Upgrade Framework"/>
          <component name="Web 2.0 HTTP Pub-Sub Server"/>
          <component name="WebLogic SCA"/>
          <component name="WebLogic JDBC Drivers"/>
          <component name="Third Party JDBC Drivers"/>
          <component name="WebLogic Server Clients"/>
          <component name="WebLogic Web Server Plugins"/>
          <component name="UDDI and Xquery Support"/>
          <component name="Evaluation Database"/>
          <component name="Workshop Code Completion Support"/>
        </component>
        <component name="Oracle Configuration Manager" version="10.3.5.0" InstallDir="">
          <component name="Data Collector"/>
        </component>
      </release>
    </product>
  </host>
</bea-product-information>

 

Linux

Linux version 2.6.32-431.el6.x86_64 (mockbuild@x86-023.build.eng.bos.redhat.com) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC) ) #1 SMP Sun Nov 10 22:19:54 EST 2013

JDK

java version "1.6.0_37"
Java(TM) SE Runtime Environment (build 1.6.0_37-b06)
Oracle JRockit(R) (build R28.2.5-20-152429-1.6.0_37-20120927-1915-linux-x86_64, compiled mode)

 

2、初始参数

启动adminonline

Admin

weblogic 50455 50366  9 16:01 pts/2    00:00:47 /home/mw/weblogic/jrockit1.6/bin/java -jrockit -Xms1024m -Xmx1024m -Dweblogic.Name=AdminServer -Djava.security.policy=/home/mw/weblogic/Oracle/Middleware/wlserver_10.3/server/lib/weblogic.policy -Dweblogic.ProductionModeEnabled=true -da -Dplatform.home=/home/mw/weblogic/Oracle/Middleware/wlserver_10.3 -Dwls.home=/home/mw/weblogic/Oracle/Middleware/wlserver_10.3/server -Dweblogic.home=/home/mw/weblogic/Oracle/Middleware/wlserver_10.3/server -Dweblogic.management.discover=true -Dwlw.iterativeDev=false -Dwlw.testConsole=false -Dwlw.logErrorsToConsole=false -Dweblogic.ext.dirs=/home/mw/weblogic/Oracle/Middleware/patch_wls1036/profiles/default/sysext_manifest_classpath weblogic.Server

 

Online

weblogic 50630 50541 99 16:02 pts/2    00:20:50 /home/mw/weblogic/jrockit1.6/bin/java -jrockit -Xms1024m -Xmx1024m -Dweblogic.Name=online -Djava.security.policy=/home/mw/weblogic/Oracle/Middleware/wlserver_10.3/server/lib/weblogic.policy -Dweblogic.ProductionModeEnabled=true -Dweblogic.security.SSL.trustedCAKeyStore=/home/mw/weblogic/Oracle/Middleware/wlserver_10.3/server/lib/cacerts -Dweblogic.threadpool.MinPoolSize=1500 -Dweblogic.threadpool.MaxPoolSize=1500 -Xmanagement -Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -XX:+HeapDumpOnOutOfMemoryError -da -Dplatform.home=/home/mw/weblogic/Oracle/Middleware/wlserver_10.3 -Dwls.home=/home/mw/weblogic/Oracle/Middleware/wlserver_10.3/server -Dweblogic.home=/home/mw/weblogic/Oracle/Middleware/wlserver_10.3/server -Dweblogic.management.discover=false -Dweblogic.management.server=t3://alipayap:7001 -Dwlw.iterativeDev=false -Dwlw.testConsole=false -Dwlw.logErrorsToConsole=false -Dweblogic.ext.dirs=/home/mw/weblogic/Oracle/Middleware/patch_wls1036/profiles/default/sysext_manifest_classpath weblogic.Server

 

Admin

Total mapped                  7421180KB           (reserved=5845412KB)

-              Java heap      1048576KB           (reserved=0KB)

-              GC tables        35084KB          

-          Thread stacks        30372KB           (#threads=75)

-          Compiled code      1048576KB           (used=15521KB)

-               Internal         1416KB          

-                     OS       141524KB          

-                  Other      4976368KB          

-            Classblocks         7936KB           (malloced=7749KB #20800)

-        Java class data       130304KB           (malloced=130080KB #94534 in 20800 classes)

- Native memory tracking         1024KB           (malloced=161KB #10)

 

Online

Total mapped                 36434172KB           (reserved=34360944KB)

-              Java heap      1048576KB           (reserved=0KB)

-              GC tables        35084KB          

-          Thread stacks       441364KB           (#threads=0)

-          Compiled code      1048576KB           (used=0KB)

-               Internal         1672KB          

-                     OS       141520KB          

-                  Other     33565572KB          

-            Classblocks         8448KB           (malloced=8175KB #22724)

-        Java class data       140800KB           (malloced=139949KB #103882 in 22724 classes)

- Native memory tracking         2560KB           (malloced=1371KB #10)

 

 

3Online溢出后信息

 

Admin

Total mapped                  7486988KB           (reserved=5910828KB)

-              Java heap      1048576KB           (reserved=0KB)

-              GC tables        35084KB          

-          Thread stacks        30644KB           (#threads=76)

-          Compiled code      1048576KB           (used=15545KB)

-               Internal         1416KB          

-                     OS       141656KB          

-                  Other      5041772KB          

-            Classblocks         7936KB           (malloced=7752KB #20811)

-        Java class data       130304KB           (malloced=130113KB #94587 in 20811 classes)

- Native memory tracking         1024KB           (malloced=162KB #10)

 

Online

Total mapped                 36435708KB           (reserved=34331208KB)

-              Java heap      1048576KB           (reserved=0KB)

-              GC tables        35084KB          

-          Thread stacks       431300KB           (#threads=1549)

-          Compiled code      1048576KB           (used=14733KB)

-               Internal         1672KB          

-                     OS       141792KB          

-                  Other     33575364KB          

-            Classblocks         8448KB           (malloced=8174KB #22721)

-        Java class data       140800KB           (malloced=139904KB #103863 in 22721 classes)

- Native memory tracking         4096KB           (malloced=1371KB #10)

 

 4、分析内存溢出文件

支付宝压力测试故障处理报告

 

1、 概述

2016年3月30日,功能压力测试时发现当压力机达到200tps时,被管服务器online堆内存持续上涨,并最终出现内存溢出问题,通过分析日志、监控online堆内存增涨曲线初步定位online出现内存泄露问题。

2、 分析

通过分析日志发现系统出现“OutOfMemoryError”即堆内存溢出问题,即在weblogic启动参数中添加“-XX:+HeapDumpOnOutOfMemoryErro”令系统出现内存溢出时,生成heapdump文件,以便分析引发内存溢出的原因。

再次压力测试发现系统抛出“OutOfMemoryError”异常,并生成对应的heapdump,使用工具分析heapdump发现server中存在一个【MemorySessionContext】对象占用了【1,145,301,736】字节的数据,通过分析此对象为weblogic的memorySession对象,分析截图如下:

 

由此分析引发内存溢出的原因可能如下:

I、 由于没有设置session超时,导致所有的会话信息在堆内存保存,导致内存溢出;

II、 由于设置的session超时时间较长,在大并发的情况下,未等到session失效便积累了大量会话,使会话信息占用大量堆内存,导致内存溢出。

3、 处理建议

I、 请检查应用程序是否设置了session超时;

II、 请根据应用程序的情况,适当调整session超时的时间;

III、 有针对性的调整压力测试策略,使压力测试符合真实使用场景;

IV、 若设置了session超时、并且超时时间已最优,实用场景也没有问题,请适当扩大堆内存,令堆内存设置为大于原来的4G。(注意:不建议这样做,堆内存越大每次Full GC的时间便会加长)

 

posted @ 2016-04-05 20:55  W&L  阅读(1050)  评论(0编辑  收藏  举报