无法跨越jmeter中的特定数量的线程

时间:2013-08-22 19:17:36

标签: multithreading testing load jmeter distributed

我正在尝试使用主窗口框和四个从属Linux盒远程运行jmeter负载测试。 在这个配置中,我能够每个从属框只产生最多983个线程,之后我看到抛出的异常,说它由于内存不足异常而无法创建新线程。我的硬件配置相当高,有64个内核和64 GB RAM。所以硬件不应该成为瓶颈。 我用于起始堆大小的设置是3072m。在大多数论坛中,建议减少此数字,默认值为512k。但是,如果我保持在较低的位置,同时在从属框中启动jmeter-server,我会被提示我的初始堆大小太低。

我使用的其他配置是作为独立服务器的linux机箱之一,在这种情况下,我能够产生大约10k个线程而没有任何问题。

我已经将我的ulimit增加到32768。

有没有办法使用主从配置生成更多线程,或者我应该完全删除它并在所有四个框上并行运行脚本并编译数据。 如果是这样,你能给我一些第二种方法的指示吗?

2 个答案:

答案 0 :(得分:0)

  • 512K适用于Xss而不是Xmx,您可以将Xmx保留为您设置的内容。
  • 使用Java 64位JVM而不是32位,并使用最新的java版本
  • 如果发现问题,您还可以为每个盒子运行许多JMeter实例
  • 确保使用最后一个jmeter版本

阅读本文:

答案 1 :(得分:0)

以下是我所做的一些重要发现。这些数字与我的机器的大小成正比。您可以使用以下方式检查:

cat /proc/meminfo

  • 使用以下内容更改ulimit设置:

    ulimit -n 32768

  • 如果您是root用户,那会有所不同。我不确定你是否必须是root或sudo用户。但是以root身份登录确实允许我产生更多线程。

  • 更改了一些sysctl设置。

    /sbin/sysctl net.core.wmem_max=8388608

    /sbin/sysctl net.core.rmem_max=8388608

    /sbin/sysctl net.ipv4.tcp_rmem="4096 87380 8388608"

    /sbin/sysctl net.ipv4.tcp_wmem="4096 87380 8388608"

    /sbin/sysctl net.ipv4.tcp_tw_reuse=0

    /sbin/sysctl net.ipv4.tcp_tw_recycle=0

    /sbin/sysctl net.ipv4.tcp_keepalive_time=1800

    /sbin/sysctl net.ipv4.tcp_max_syn_backlog=4096