【问题标题】:Native memory allocation (malloc) failed to allocate 32756 bytes for ChunkPool::allocate本机内存分配 (malloc) 未能为 ChunkPool::allocate 分配 32756 字节
【发布时间】:2021-07-15 12:26:24
【问题描述】:

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

当我以 100,200 和 300 个用户的负载运行测试时,它运行良好

我发现了一个问题jmeter test failed with out of memory error,但这无助于解决问题。

已尝试在具有 12 GB RAM16 GB RAM 的机器上运行此程序。

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

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

【问题讨论】:

    标签: jmeter jmeter-3.2


    【解决方案1】:
    1. 不要在 GUI 模式下运行测试,根据终端输出的第一行,您应该使用 non-GUI mode 运行测试。 GUI 模式仅用于测试开发或调试。
    2. 一定要使用64-bit Java JDK or Server JRE,需要选择Windows x64选项
    3. Increase your JVM Heap 大小通过修改HEAP environment variable 喜欢:

      set HEAP=4G && jmeter.bat -n -t test.jmx -l result.jtl
      
    4. 请务必关注JMeter Best Practices9 Easy Solutions for a JMeter Load Test “Out of Memory” Failure 文章中的建议

    【讨论】:

    • 让我试试非GUI模式。
    • 糟糕!我正在运行 Java 7 32 位,让我更改它并重试。
    【解决方案2】:

    我必须在 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 
    

    然后它工作得很好。

    【讨论】:

      【解决方案3】:

      正如Dimitri's answer 提到的,不要使用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 了解如何增加系统的页面大小。

      【讨论】:

        猜你喜欢
        • 2023-03-31
        • 2013-07-04
        • 2012-12-26
        • 2017-05-23
        • 2013-02-23
        • 1970-01-01
        • 2016-02-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多