java - JMeter中使用多线程测试时无法解决 "Uncaught Exception java.lang.OutOfMemoryError: unable to create new native thread"

标签 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.

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

这是我编辑它的方法。我将其从 512m 更改为 1024m: enter image description here

但是这不起作用。然后我改成了更大的值2048m,还是不行。

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

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

我不确定这是否是正确的方法。也没有成功。

有些人还说也许应该增加 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/

相关文章:

java - 适用于 Android 应用的 Kivy 和 Java 之间的区别

java - 使用 jaxb 处理带有可选内部标签和值的 xml

java - 这是尾递归吗?

java同步和对象锁

java - Swing应用程序多线程设计模式和最佳实践

java - 主要垃圾收集是否需要 JVM 之外的内存?

scala - 为什么单例对象创建的scala程序不需要静态main方法?

java - 静态内部类中的主要方法。?

php - 使用JVM构建PHP扩展,需要实现思路

c# - 取消正在运行的进程