zoukankan      html  css  js  c++  java
  • Jmeter OutofMemory Error

    在给一个项目做稳定性测试中,也就是长时间运行jmeter,发现两个问题:

    1,在聚合报告中,throuhtput随着时间的增加也减小,从80-50.。。很是迷惑。

    2,在jmeter运行一段时间,大概是1小时左右,jmeter 就crash.

    查看bin目录下的jmeter.log发现报以下错误

    ERROR - jmeter.threads.JMeterThread: Error processing Assertion  Java.lang.OutOfMemoryError: Java heap space

            at java.util.Arrays.copyOf(Arrays.java:2367)

            at java.lang.StringCoding.safeTrim(StringCoding.java:89)

            at java.lang.StringCoding.access$100(StringCoding.java:50)

            at java.lang.StringCoding$StringDecoder.decode(StringCoding.java:154)

            at java.lang.StringCoding.decode(StringCoding.java:193)

            at java.lang.String.<init>(String.java:416)

            at java.lang.String.<init>(String.java:481)

    于是google解决方法,看到的解决方法,原文如下:

    -----------

    使用jmeter进行压力测试时遇到一段时间后报内存溢出outfmenmory错误,导致jmeter卡死了,先尝试在jmeter.bat中增加了JVM_ARGS="-Xmx2048m -Xms2048m -Xmn256m -XX:PermSize=128m -Xss256k",但结果运行时间增加了,但最终还是报内存溢出,百度后按照网友的建议更改了如下设置后jmeter就没有再卡了:
    windows环境下,修改jmeter.bat:

    set HEAP=-Xms256m -Xmx256m
    set NEW=-XX:NewSize=128m -XX:MaxNewSize=128m
    改为:
    set HEAP=-Xms256m -Xmx1024m
    set NEW=-XX:NewSize=128m -XX:MaxNewSize=512m



    linux环境下,修改jmeter.sh:
    java $JVM_ARGS -Xms1G -Xmx5G -XX:MaxPermSize=512m -Dapple.laf.useScreenMenuBar=true -jar `dirname $0`/ApacheJMeter.jar "$@"
     
    -----------

    于是我按着此方法设置了一翻,之后测试一段时间,错误还是一样。我想到了jconsole监测jmetere内存,发现在测试过程中堆内存一直是上升状态,这是内存溢出原因!为什么呢,?就好像测试有什么不断的写到内存。接着google,在官方wiki的文档发现问题所在:

    ------

    https://wiki.apache.org/jmeter/JMeterFAQ

     

    JMeter keeps getting "Out of Memory" errors. What can I do?

    This is usually caused by including memory intensive listeners in your stress test. Listeners like "View Tree Results" are useful for debugging your test, but they are too memory intensive to remain in your test when you ramp up the number of simulated users and iterations. The best listeners to use for a long-term, high-load test are Aggregate Listener, Graph Listener, and Spline Listener.

    In addition, you can instruct the JVM to use more memory by editing the jmeter/jmeter.bat files for Linux/windows. Within these files, find a section that sets values for the Heap:

    • set HEAP=-Xms256m -Xmx256m

    Feel free to change these values. Xms indicates the starting RAM the jvm will take, and Xmx will be the maximum it is allowed (for the HEAP).

    ------------

    这提醒应该是‘查看结果树’问题!于是删除掉这个listerner,这是在脚本调试的时候用的,调试好了删除掉吧。重新开跑!

    再用jconsole监控,内存不会一直递增!jmeter也不报outmemory的错误了!到此问题解决。

  • 相关阅读:
    集合
    16
    最常使用Eclipse快捷键
    Java小菜的进阶之路(异常捕获与处理(一))
    0803作业
    0801作业
    java中this与super的见解
    7.27作业
    7.23作业
    java内部类的浅谈(错误之处还请见谅!)
  • 原文地址:https://www.cnblogs.com/beiyue/p/5960465.html
Copyright © 2011-2022 走看看