25. Apache JMeter 分布式测试一步一步

这个简短的教程解释了如何使用多个系统来执行压力测试。在我们开始之前,有几件事需要检查。

  • 系统上的防火墙已关闭或打开了正确的端口。
  • 所有客户端都在同一个子网上。
  • 如果使用192.xxx10.xxx IP 地址,则服务器位于同一子网中。如果服务器不使用192.xx10.xx IP 地址,应该没有任何问题。
  • 确保 JMeter 可以访问服务器。
  • 确保在所有系统上使用相同版本的 JMeter 和 Java。混合版本将无法正常工作。
  • 您已为 RMI 设置 SSL或禁用它。

确定系统准备就绪后,就可以设置远程测试了。本教程假设您已经在所有系统上安装了 JMeter。JMeter 的工作方式是一个控制器节点在多个工作节点上启动测试。

在本教程中,我们仅使用 GUI 模式进行演示。在现实生活中,您应该使用 CLI 模式(非 GUI)来开始负载测试
简单的测试计划
简单的测试计划

25.2 开始测试

此时,您已准备好开始负载测试。如果要仔细检查工作节点是否正常工作,请在编辑器中打开jmeter.log。您应该在日志中看到以下内容。

Writing log file to: /XXXX/XXXXX/bin/jmeter-server.log
Created remote object: UnicastServerRef [liveRef: [endpoint:[192.X.X.X:XXXXX](local),objID:[-6a665beb:15a2c8b9419:-7fff, 3180474504933847586]]]

如果您没有看到此消息,则表示jmeter-server未正确启动。有关调试问题的提示,请转到提示部分。启动测试有两种方法:单个系统和所有系统。

25.3 启动单个客户端

  1. 点击顶部的运行
  2. 选择远程启动
  3. 选择 IP 地址
启动单个工作节点
启动单个工作节点

25.4 启动所有客户端

  1. 点击顶部的运行
  2. 选择远程全部启动或使用Ctrl  +  Shift  +  R
启动所有工作节点
启动所有工作节点

25.5 限制

分布式测试有一些基本限制。这是已知项目的列表,没有特定的顺序。

  1. RMI 不能在没有代理的情况下跨子网通信;因此,JMeter 也不能没有代理。
  2. 从 2.9 版本开始,JMeter 将所有测试结果剥离 Response 数据发送到控制台,这样可以减少对网络 IO 的影响。确保您监控您的网络流量,以便此流量不会引起争用
  3. 在 2-3 GHz CPU(最近的 CPU)上运行的单个 JMeter 客户端可以处理 1000-2000 个线程,具体取决于测试类型。

25.7 提示

在某些情况下,防火墙可能仍会阻止 RMI 流量。

防病毒和防火墙

在负载测试期间应停止防病毒,因为它会严重影响导致错误结果的时间。

需要从 Windows 服务中停止防火墙,或者至少需要打开一些端口。

  1. 打开控制面板
  2. 打开管理工具
  3. 双击服务
  4. 转到赛门铁克防病毒,右键单击并选择停止

Windows 防火墙

  1. 打开网络连接
  2. 选择网络连接
  3. 右键单击并选择属性
  4. 选择高级选项卡
  5. 取消选中互联网连接防火墙

Linux

在 Linux 上,iptables 可能默认打开。有关说明,请参阅 用户手册中的远程测试

在 RedHat(或衍生产品)上,iptables 默认是打开的。执行

service iptables stop
停止 Linux 防火墙或确保打开正确的端口。

Go to top