无法解决" Uncaught Exception java.lang.OutOfMemoryError:无法创建新的本机线程"在JMeter中使用多个线程进行测试时

时间:2017-05-10 12:45:01

标签: java multithreading jvm jmeter jvm-arguments

我正在加载测试与JMeter的MQTT连接。

测试在非GUI模式下运行。 所有听众在测试期间都被禁用。

一切都很好,直到我将线程数从2k增加到3k。现在,当我运行测试时会发生此错误:

Uncaught Exception java.lang.OutOfMemoryError: unable to create new native thread. See log file for details.

我尝试通过编辑可执行文件来增加HEAP大小" jmeter" enter image description here

以下是我编辑它的方式。我把它从512米改为1024米: enter image description here

但它不起作用。然后我换了一个更大的值2048m,仍然没有工作。

我搜索了这个问题,发现它可能与线程堆栈大小有关。有人指出我也可以在脚本中设置线程堆栈大小。所以我尝试在可执行文件中添加线程堆栈大小。

我就是这样做的: enter image description here

我不确定这是不是正确的方法。它也没有用。

有些人还说可能会增加JAP的HEAP大小或Thread堆栈大小。

然后我遇到了MKYoung的这个教程:https://www.mkyong.com/java/how-to-set-java_home-environment-variable-on-mac-os-x/ 说明改变HEAP大小和java的线程堆栈大小的方法。

但是为了设置工作,我必须在命令的末尾声明一个java类文件。

java -Xss256k <class name here>

但Jmeter是unix可执行文件,并且似乎没有任何java类文件。

我真的没有办法了。请帮忙。

1 个答案:

答案 0 :(得分:1)

执行ulimit -u命令(显示最大用户进程)并根据您尝试使用的线程数进行修改(以及其他进程可以运行的更多),检查输出How to change default number of max process per user in linux主题以获取详细信息。

除此之外,请确保您遵循9 Easy Solutions for a JMeter Load Test “Out of Memory” Failure指南中的建议。