25. Apache JMeter 分布式测试一步一步¶
这个简短的教程解释了如何使用多个系统来执行压力测试。在我们开始之前,有几件事需要检查。
- 系统上的防火墙已关闭或打开了正确的端口。
- 所有客户端都在同一个子网上。
- 如果使用192.xxx或10.xxx IP 地址,则服务器位于同一子网中。如果服务器不使用192.xx或10.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 启动单个客户端¶
- 点击顶部的运行
- 选择远程启动
- 选择 IP 地址
25.4 启动所有客户端¶
- 点击顶部的运行
- 选择远程全部启动或使用Ctrl + Shift + R
25.5 限制¶
分布式测试有一些基本限制。这是已知项目的列表,没有特定的顺序。
- RMI 不能在没有代理的情况下跨子网通信;因此,JMeter 也不能没有代理。
- 从 2.9 版本开始,JMeter 将所有测试结果剥离 Response 数据发送到控制台,这样可以减少对网络 IO 的影响。确保您监控您的网络流量,以便此流量不会引起争用
- 在 2-3 GHz CPU(最近的 CPU)上运行的单个 JMeter 客户端可以处理 1000-2000 个线程,具体取决于测试类型。
25.7 提示¶
在某些情况下,防火墙可能仍会阻止 RMI 流量。
防病毒和防火墙
在负载测试期间应停止防病毒,因为它会严重影响导致错误结果的时间。
需要从 Windows 服务中停止防火墙,或者至少需要打开一些端口。
- 打开控制面板
- 打开管理工具
- 双击服务
- 转到赛门铁克防病毒,右键单击并选择停止
Windows 防火墙
- 打开网络连接
- 选择网络连接
- 右键单击并选择属性
- 选择高级选项卡
- 取消选中互联网连接防火墙
Linux
在 Linux 上,iptables 可能默认打开。有关说明,请参阅 用户手册中的远程测试
在 RedHat(或衍生产品)上,iptables 默认是打开的。执行
service iptables stop停止 Linux 防火墙或确保打开正确的端口。