Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“无法解决”;未捕获异常java.lang.OutOfMemoryError:无法创建新的本机线程;在JMeter中使用多线程进行测试时_Java_Multithreading_Jvm_Jmeter_Jvm Arguments - Fatal编程技术网

“无法解决”;未捕获异常java.lang.OutOfMemoryError:无法创建新的本机线程;在JMeter中使用多线程进行测试时

“无法解决”;未捕获异常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

我正在用JMeter对MQTT连接进行负载测试

测试在非GUI模式下运行。 测试期间禁用了所有侦听器

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

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?软限制和硬限制