在给一个项目作稳定性测试中,也就是长时间运行jmeter,发现两个问题:java
1,在聚合报告中,throuhtput随着时间的增长也减少,从80-50.。。非常迷惑。linux
2,在jmeter运行一段时间,大概是1小时左右,jmeter 就crash.apache
查看bin目录下的jmeter.log发现报如下错误windows
ERROR - jmeter.threads.JMeterThread: Error processing Assertion Java.lang.OutOfMemoryError: Java heap spaceapp
at java.util.Arrays.copyOf(Arrays.java:2367)jvm
at java.lang.StringCoding.safeTrim(StringCoding.java:89)测试
at java.lang.StringCoding.access$100(StringCoding.java:50)google
at java.lang.StringCoding$StringDecoder.decode(StringCoding.java:154)spa
at java.lang.StringCoding.decode(StringCoding.java:193).net
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:
因而我按着此方法设置了一翻,以后测试一段时间,错误仍是同样。我想到了jconsole监测jmetere内存,发如今测试过程当中堆内存一直是上升状态,这是内存溢出缘由!为何呢,?就好像测试有什么不断的写到内存。接着google,在官方wiki的文档发现问题所在:
------
https://wiki.apache.org/jmeter/JMeterFAQ
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:
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的错误了!到此问题解决。