25. Apache JMeter分布式测试循序渐进
这个简短的教程说明了如何使用多个系统执行压力测试。在我们开始之前,有几件事要检查。
- 系统上的防火墙已关闭或打开了正确的端口。
- 所有客户端都在同一子网上。
- 如果使用192.xxx或10.xxx IP地址,则服务器位于同一子网中。如果服务器不使用192.xx或10.xx IP地址,则应该没有任何问题。
- 确保JMeter可以访问服务器。
- 确保在所有系统上使用相同版本的JMeter和Java。混合版本将无法正常工作。
- 您已经为RMI设置了SSL或将其禁用。
一旦确定系统已准备就绪,就可以进行远程测试了。本教程假定您已经在所有系统上安装了JMeter。JMeter的工作方式是一个控制器节点在多个工作节点上启动测试。
在本教程中,我们仅使用GUI模式进行演示。在现实生活中,您应该使用CLI模式(NON GUI)来开始负载测试
25.1术语
在深入了解分步说明之前,最好先定义术语并确保定义清楚。
- 控制器节点
- 运行JMeter GUI(控制测试)的系统
- 工作节点
- 运行jmeter-server的系统,该系统从GUI接收命令并将请求发送到目标系统
- 目标
- 我们计划进行压力测试的Web服务器
25.2分步介绍
- 在工作节点上,转到jmeter / bin目录,然后执行 jmeter-server.bat(Unix上的jmeter-server)。
- 在充当控制台的控制器节点上,打开Windows资源管理器并转到 jmeter / bin目录
- 在文本编辑器中打开jmeter.properties
- 编辑行remote_hosts = 127.0.0.1
- 添加IP地址。例如,如果我有在192.168.0.10,...,192.168.0.15上运行的JMeter服务器,则该条目将如下所示:
remote_hosts = 192.168.0.10,192.168.0.11,192.168.0.12,192.168.0.13,192.168.0.14
- 启动JMeter。
- 打开您要使用的测试计划
简单的测试计划
25.2开始测试
此时,您就可以开始负载测试了。如果要再次检查工作节点是否正常运行,请在编辑器中打开jmeter.log。您应该在日志中看到以下内容。
将日志文件写入:/XXXX/XXXXX/bin/jmeter-server.log 创建的远程对象:UnicastServerRef [liveRef:[端点:[192.XXX:XXXXX](本地),objID:[-6a665beb:15a2c8b9419:-7fff,3180474504933847586]]]]
如果没有看到此消息,则表明jmeter-server没有正确启动。有关调试问题的提示,请转到提示部分。有两种方法可以启动测试:单个系统和所有系统。
25.5局限性
分布式测试有一些基本限制。以下是无特定顺序的已知项目列表。
- 如果没有代理,RMI无法跨子网通信。因此,没有代理,JMeter也不能。
- 从2.9版开始,JMeter将剥离响应数据的所有测试结果发送到控制台,这使我们能够减少对网络IO的影响。确保监视网络流量,以免引起流量争用
- 在2-3 GHz CPU(最近的CPU)上运行的单个JMeter客户端可以处理1000-2000个线程,具体取决于测试的类型。
25.7小贴士
在某些情况下,防火墙可能仍会阻止RMI通信。
防病毒和防火墙
应在负载测试期间停止防病毒,因为它会严重影响时间安排,从而导致错误的结果。
需要从Windows服务停止防火墙,或者至少需要打开某些端口。
- 打开控制面板
- 开放式管理工具
- 双击服务
- 向下查看Symantec Antivirus,右键单击并选择“停止”。
Windows防火墙
- 开放式网络连接
- 选择网络连接
- 右键单击并选择属性
- 选择高级标签
- 取消选中Internet连接防火墙
的Linux
在Linux上,默认情况下可能会打开iptables。有关说明,请参阅用户手册中的“ 远程测试”
在RedHat(或衍生产品)上,默认情况下iptables是打开的。执行
service iptables stop停止Linux防火墙或确保您打开正确的端口。