【发布时间】:2017-05-10 12:45:00
【问题描述】:
我正在使用 JMeter 对 MQTT 连接进行负载测试。
测试在非 GUI 模式下运行。 在测试期间,所有听众都被禁用。
一切都很好,直到我将线程数从 2k 增加到 3k。现在,当我运行测试时出现此错误:
Uncaught Exception java.lang.OutOfMemoryError: unable to create new native thread. See log file for details.
我尝试通过编辑可执行文件“jmeter”来增加 HEAP 大小
这是我编辑它的方式。我将它从 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 类文件。
我真的没办法了。请帮忙。
【问题讨论】:
-
"查看日志文件了解详情。"日志说什么?
-
@bradimus 嗨,我在日志中看不到任何有用的信息。没有错误。但仅供参考,我正在查看日志文件 jmeter.log。我不确定这是否是这里所说的日志文件。
-
@finalstatic 您能否提及操作系统的位(32 或 64)以及已安装的 JVM?当您说将堆设置为 2048m 不起作用时,您是指问题还是将 2048m 分配给 JMeter 不起作用?另外,您是否尝试过以分布式模式运行测试?
标签: java multithreading jvm jmeter jvm-arguments