应用场景:设想要集中测试一个Web服务器的性能表现, 我们用一台机器模拟上千个用户不断地访问被测试的服务器,可能会遇到一些瓶颈,模拟的用户不够,服务器设置了安全措施、拒绝接收(当有超量的数据来自同一台机器在短时间内,服务器就会认为这是外来的攻击行为),测试机的配置过低、不能完成上千个用户的请求。
解决方案:利用JMeter的分布式测试配置,就可以很轻松的解决上述问题。如下图所示,我们选择一台主机(Master),然后配置一些节点服务器(Slaves),主机发送测试运行指令,节点服务器在同一时间模拟用户对终端服器发送请求。这样总模拟的用户数量 = 单个节点用户数 * 节点服务器个数
学习要点:
如何配置主机与节点服务器
如何调试测试计划,确保测试运行在节点服务器
如何通过主机发出运行测试指令并验证测试结果
温馨提示:如果您想按示例进行操作,一定要具备以下配置
·测试工具: JMeter 5.3
·测试机: 3 台 (本例中我安装了2台虚拟机Ubuntu做为节点,Windows 做为主机)
主机配置 - Windows
1.创建rmi_keystore.jks文件在主机(Master)上 (注:此文件也可以在任意节点服务器上生成,最终确保主机与节点服务器有相同的文件即可)。
假设JMeter 5.3已经下载 且安装在主机上。打开Command Prompt并去到JMeter的\bin路径下(D:\InstalledApp\apache-jmeter-5.3\bin)。
执行命令create-rmi-keystore.bat,依次回答提示的问题(本例中回答了第一问题,其它几个问题直接按了回车键)。最后,通过输入” yes” 确认你的回答。在问题Enter key password for ... ,可以直接按回车键。
2.确认rmi_keystore.jks文件。
完成以上操作以后,文件rmi_keystore.jks会显示在JMeter 的/bin文件夹下。
配置节点服务器
1.安装 JDK, Install JDK
执行命令 sudo apt install openjdk-8-jre-headless 完成JDK的安装
2.安装JMeter 5.3
执行命令wget https://archive.apache.org/dist/jmeter/binaries/apache-jmeter-5.3.tgz
执行命令 tar -xzf apache-jmeter-5.3.tgz 解压JMeter
完上以上步骤,确认JMeter 安装成功(示例中所有命令是在Desktop 的路径下执行的,因此JMeter的解压包就显示在桌面上,您也可以根据执行路径的不同确认JMeter是否安装成功。
3.拷贝rmi_keystore.jks 到apache-jmeter-5.3/bin 目录下
4.获取当前节点服务器的ip地址
执行命令: ip r
5.启动节点服务器
执行命令 sh jmeter-server -Jserver.rmi.ssl.keystore.file=rmi_keystore.jks。(注意一定要去到jmeter的/bin目录下执行)
6.拷贝测试计划以及相关的测试数据到节点服务器(示例中,测试计划DistributingPOST.jmx在JMeter的/bin文件下。)
7.依照以上步骤完成对第二台节点服务器的配置
GUI调试
1.配置节点服务器
打开文件jmeter.properties, 找到remote_hosts并输入节点服务器的IP(多个IP用逗号隔开),然后保存关闭即可。
2.确认测试用例可以运行在主机上。(示例中模拟了6个用户向服务器发送Post的请求,从结果可以看出6个用户的请求都得到了成功的回应。)
3.通常在正式测试之前,需要对测试计划进行不停地调试,或遇到问题时需要找出错的原因,GUI有时候可能会更直观一些。
依次打开Run > Remote Start, 可以看到当前配置的节点服务器IP
执行命令Remote Start All – 测试将同时运行在2台节点服务器上
4.查看运行结果
如下图 View Results Tree的结果中,12个用例运行成功,点击某一个用例,在右边的Sampler result中,Thread Name指示了当前用例运行的节点服务器IP。
测试运行在节点服务器<192.168.1.15>
测试运行在节点服务器<192.168.1.14>
作者:胡军英
来源:51Testing软件测试网原创