0

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

我使用的另一种配置是作为独立服务器的 linux 机器之一,在这种情况下,我能够毫无问题地生成大约 10k 线程。

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

有没有办法使用主从配置产生更多线程,或者我应该完全放弃它并在所有四个盒子上并行运行脚本并编译数据。如果是这样,你能给我一些关于第二种方法的建议吗?

4

2 回答 2

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

并阅读:

于 2013-08-22T20:56:46.383 回答
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

于 2014-02-18T15:45:08.537 回答