“无法解决”;未捕获异常java.lang.OutOfMemoryError:无法创建新的本机线程;在JMeter中使用多线程进行测试时
我正在用JMeter对MQTT连接进行负载测试 测试在非GUI模式下运行。 测试期间禁用了所有侦听器 在我将线程数从2k增加到3k之前,一切都很好。现在,在运行测试时发生此错误:“无法解决”;未捕获异常java.lang.OutOfMemoryError:无法创建新的本机线程;在JMeter中使用多线程进行测试时,java,multithreading,jvm,jmeter,jvm-arguments,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”来增加堆大小 下面是我如何编辑它的。我将其从512m更改为1
Uncaught Exception java.lang.OutOfMemoryError: unable to create new native thread. See log file for details.
我试图通过编辑可执行文件“jmeter”来增加堆大小
下面是我如何编辑它的。我将其从512m更改为1024m:
但它不起作用。然后我改为更大的值2048m,仍然不起作用
我搜索了这个问题,发现它可能与线程堆栈大小有关。有人指出,我也可以在脚本中设置线程堆栈大小。因此,我尝试在可执行文件中添加线程堆栈大小
我就是这样做的:
我不确定这是不是正确的方法。它也不起作用
有些人还说,JVM的堆大小或线程堆栈大小应该增加
然后我看到了MKYoung的这篇教程:
说明更改java堆大小和线程堆栈大小的方法
但是为了使设置生效,我必须在命令末尾声明一个java类文件
java -Xss256k <class name here>
java-Xss256k
但是Jmeter是unix可执行文件,并且那里似乎没有任何java类文件
我真的没办法了。请帮忙 执行命令(显示最大用户进程数),并根据您尝试使用的线程数对其进行修改(以及稍多一些以便其他进程可以操作),查看线程以了解详细信息
除此之外,请确保您遵循指南中的建议 “查看日志文件了解详细信息。”日志上写的是什么?@bradimus嗨,我在日志中没有看到任何有用的东西。没有错误。但仅供参考,我正在查看日志文件jmeter.log。我不确定这是否是这里所说的日志文件。@finalstatic您能提到操作系统的位(32或64)以及安装的JVM吗?当您说将堆设置为2048m不起作用时,您是指问题还是将2048m分配给JMeter不起作用?另外,您是否尝试过在分布式模式下运行测试?您好,我如何在Mac下设置ulimit-u。直接设置它不起作用。它输出:-bash:ulimit:max用户进程:无法修改限制:不允许操作。我也无法在/etc/security下看到任何limits.conf。我读了你提供的链接,但仍然没有帮助。对于Mac,它将是
sudo launchctl limit maxproc
和/etc/sysctl.conf
对应的提供过时指令的道歉,尝试创建/etc/launchd.conf
文件,并在那里添加类似limit maxproc XXXX yyy
的行-这样设置将在重新启动后仍然有效。您好,什么是XXXX和yyy?软限制和硬限制