jmeter OutOfMemoryError 解决方案

来源:互联网 发布:超链接调用js 编辑:程序博客网 时间:2024/05/01 01:58

原文地址:http://blog.csdn.net/u011303778/article/details/44174101

最近从loadrunner转jmeter上,喜欢来喜欢jmeter了。在给一个项目做稳定性测试中,也就是长时间运行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的错误了!到此问题解决。

0 0
原创粉丝点击