本机内存分配 (malloc) 无法为 ChunkPool::allocate 分配 32756 字节

Native memory allocation (malloc) failed to allocate 32756 bytes for ChunkPool::allocate

我们有一个 JMeter 测试,它在给出以下错误消息之间停止

当我 运行 负载为 100,200 和 300 个用户的测试时 运行 没问题

我发现了一个问题jmeter test failed with out of memory error,但这对解决问题没有帮助。

已在 12 GB RAM16 GB RAM 的机器上尝试过 运行。

它出现这种行为的可能原因是什么?

还尝试在非 GUI 模式下 运行 即使测试停止。

  1. 不要 运行 在 GUI 模式下进行测试,根据终端输出的第一行,您应该使用 non-GUI mode 进行 运行 测试。 GUI 模式仅用于测试开发或调试。
  2. 确保使用64-bit Java JDK or Server JRE,你需要选择Windows x64选项
  3. Increase your JVM Heap size by amending HEAP environment variable 赞:

    set HEAP=4G && jmeter.bat -n -t test.jmx -l result.jtl
    
  4. 确保关注JMeter Best Practices and recommendations from 9 Easy Solutions for a JMeter Load Test “Out of Memory” Failure文章

我必须在 jmeter.bat(批处理文件)

中添加以下代码
set JVM_ARGS=-Xms512m -Xmx8000m

我在这里添加了这个

    if not defined HEAP (
    rem See the unix startup file for the rationale of the following parameters,
    rem including some tuning recommendations
    set HEAP=-Xms1g -Xmx1g -XX:MaxMetaspaceSize=8000m 

)
set JVM_ARGS=-Xms512m -Xmx8000m 

然后它工作得很好。

正如 提到的,不要使用 GUI,它应该只用于测试或调试。但这似乎不是 OP 的问题。

就我而言,我遇到了 2 次不同的问题,有 2 种不同的解决方案:

  1. 我已经使用 GUI 测试了一段时间,也打开了它的一些输出文件,总共大约 1 GB。关闭 GUI 和那些文件让我通过命令行返回足够的内存 运行。

  2. 我将堆大小增加到 4GB,但出现错误 The paging file is too small for this operation to complete。所以我增加了系统的页面文件大小并且能够 运行 Jmeter。请参阅 this link 了解如何增加系统的页面大小。