我正在使用 JMeter 负载测试 MQTT 连接。
测试在非 GUI 模式下运行。 测试期间所有听众均被禁用。
一切都很好,直到我将线程数从 2k 增加到 3k。现在,当我运行测试时出现此错误:
Uncaught Exception java.lang.OutOfMemoryError: unable to create new native thread. See log file for details.
这是我编辑它的方法。我将其从 512m 更改为 1024m:
但是这不起作用。然后我改成了更大的值2048m,还是不行。
我搜索了这个问题,发现可能和线程堆栈大小有关。有人指出我也可以在脚本中设置线程堆栈大小。所以我尝试在可执行文件中添加线程堆栈大小。
我不确定这是否是正确的方法。也没有成功。
有些人还说也许应该增加 JVM 的 HEAP 大小或线程堆栈大小。
然后我看到了 MKYoung 的这个教程:https://www.mkyong.com/java/how-to-set-java_home-environment-variable-on-mac-os-x/ 说明改变java的HEAP大小和线程栈大小的方法。
但是为了设置工作,我必须在命令末尾声明一个 java 类文件。
java -Xss256k <class name here>
但是 Jmeter 是 unix 可执行文件,并且那里似乎没有任何 java 类文件。
我真的没有办法了。请帮忙。
最佳答案
执行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 的建议指导。
关于java - JMeter中使用多线程测试时无法解决 "Uncaught Exception java.lang.OutOfMemoryError: unable to create new native thread",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43892907/