JMETER跑35000个线程时启动报内存溢出(tcp协议)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JMETER跑35000个线程时启动报内存溢出(tcp协议)相关的知识,希望对你有一定的参考价值。

# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 12288 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /usr/local/jmeter/apache-jmeter-3.1/bin/hs_err_pid11992.log
Uncaught Exception java.lang.OutOfMemoryError: unable to create new native thread. See log file for details.

按照你上面的设置,20秒之内总共要开启100个线程,每秒开启5个线程,不管之前开启的线程有没有运行完,每隔1秒就再开启5个线程,直到00个线程都开启完;循环次数设置1,即每个线程只运行一次结束。集合报告中的samples=线程数*循环次数如果并发,可把ramp-upperiod设置为1 参考技术A 看你的目标了,一般设置5个和可以了,

JMeter学习(二十八)内存溢出解决方法

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

 

1、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
 
根据经验,heap最多设置为物理内存的一半,默认设置为512M.如果heap超过物理内存的一半,可能运行jmeter会慢,甚至出现内存溢出,原因java比较吃内存,占CPU.

注意:JDK32位的电脑Xmx不能超过1500m,最大1378m.否则在启动Jmeter时会报错:
技术分享

2、linux环境下,修改jmeter.sh:
java $JVM_ARGS -Xms1G -Xmx5G -XX:MaxPermSize=512m -Dapple.laf.useScreenMenuBar=true -jar `dirname $0`/ApacheJMeter.jar "[email protected]"
 
 
3、如果查看JDK的位数
# java -version
java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
Java HotSpot(TM) Server VM (build 20.1-b02, mixed mode)

如果是64位的话,最后一行会显示64-Bit
#java -version
java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02, mixed mode)











以上是关于JMETER跑35000个线程时启动报内存溢出(tcp协议)的主要内容,如果未能解决你的问题,请参考以下文章

jmeter单台大数量并发

spark项目启动报内存溢出不能创建线程错误

JMeter学习(二十八)内存溢出解决方法

JMeter学习(二十八)内存溢出解决方法

JMeter内存溢出解决办法

05 - Jmeter连接多台电脑做压力测试