Apache JMeter分布式测试分步骤
这个简短的教程解释了如何使用多个系统来执行压力测试。在我们开始之前,有几件事要检查。
- 系统上的防火墙被关闭或正确的端口被打开。
- 所有的客户端都在同一个子网上。
- 如果使用192.xxx或10.xxx IP地址,服务器在同一个子网中。如果服务器不使用192.xx或10.xx IP地址,则不应该有任何问题。
- 确保JMeter可以访问服务器。
- 确保在所有系统上使用相同版本的JMeter和Java。混合版本将无法正常工作。
一旦确定了系统已经准备就绪,就可以开始远程测试了。本教程假定您已经在所有系统上安装了JMeter。JMeter的工作方式是一个主控制器在多个从属系统上启动测试。
在本教程中,我们仅使用GUI模式进行演示。在现实生活中,你应该使用非GUI模式来开始你的负载测试
1术语
在我们深入分步说明之前,最好定义一些术语并确保清晰。
- 主
- 运行JMeter GUI的系统,它控制测试
- 奴隶
- 运行jmeter-server的系统,它接受来自GUI的命令并向目标系统发送请求,
- 目标
- 我们打算强调测试的网络服务器
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。
- 打开你想要使用的测试计划
2开始测试
此时,您已准备好开始负载测试。如果您想仔细检查从属系统是否正常工作,请在您的编辑器中打开jmeter.log。您应该在日志中看到以下内容。
将日志文件写入:/XXXX/XXXXX/bin/jmeter-server.log 创建的远程对象:UnicastServerRef [liveRef:[endpoint:[192.XXX:XXXXX](local),objID:[ - 6a665beb:15a2c8b9419:-7fff,3180474504933847586]]]
如果你没有看到这个消息,这意味着jmeter-server没有正确启动。有关调试问题的提示,请转到提示部分。有两种方法来启动测试:一个系统和所有系统。
5限制
分布式测试有一些基本的限制。这是已知项目的列表,没有特定的顺序。
- RMI不能在没有代理的情况下跨子网进行通信; 因此JMeter也不能没有代理。
- 从版本2.9开始,JMeter将所有测试结果剥离响应数据发送到控制台,这样可以减少对网络IO的影响。确保您监控您的网络流量,以免流量造成争用
- 运行在2-3 GHz CPU(最新CPU)上的单个JMeter客户端可以根据测试类型处理1000-2000个线程。
7提示
在某些情况下,防火墙可能仍然阻塞RMI流量。
防病毒和防火墙
在负载测试期间应该停止杀毒软件,因为它会严重影响导致错误结果的时间。
防火墙需要停止从Windows服务或至少一些端口需要打开。
- 打开控制面板
- 打开管理工具
- 双击服务
- 进入赛门反病毒,右键单击并选择停止
Windows防火墙
- 打开网络连接
- 选择网络连接
- 右键单击并选择属性
- 选择高级选项卡
- 取消选中互联网连接防火墙
Linux的
在RedHat(或衍生产品)上,iptables默认是开启的。执行
服务iptables停止
停止Linux防火墙或确保您打开正确的端口。