Jmeter分布式压测
Jmeter进行性能测试时,windows非常耗费CPU和内存,单台电脑运行大量并发时容易卡死无法支撑数以万计的并发场景。针对这个情况,jmeter提供了分布式压测的解决方案,将模拟并发分发给多台机器并同时向目标机器生产大量并发请求,达到几万的并发访问,最终由管理机汇总所有负载机的测试结果。
1、前提准备
- 准备一台管理机和多台负载机,一主(master)多从(salver)
- 管理机和负载机都处于同一子网
- 管理机和负载机的JDK、Jmeter版本一致
测试使用jdk版本是1.8.0_201(cmd输入“java -version”查看jdk版本)
jmeter版本是jmeter5.5。Jmeter历史版本下载地址https://archive.apache.org/dist/jmeter/binaries/
2、负载机的配置
2.1 自定义端口。进入jmeter安装目录下,用记事本打开文件/jmeter/bin/jmeter.properties
- 查询“#server_port=1099”在下方添加一行“server_port=1201”
- 查询“#server.rmi.ssl.disable=false”在下方添加一行“server.rmi.ssl.disable=true”
2.2 负载机双击“jmeter.server.bat”重启服务使端口生效
2.3 如果启动服务报错“Server failed to start:java.rmi.server.ExportException: Listen failed on port:1201”
负载机需要检查/jmeter/bin/jmeter.properties文件,这行代码“server.rmi.ssl.disable”是否为true
3、管理机的配置
3.1 配置所有机子。进入jmeter安装目录下,用记事本打开文件/jmeter/bin/jmeter.properties
- 查询"Remote Hosts - comma delimited"在下方添加负载机id和端口“remote_hosts=xx.xx.xx.xx:1201,xx.xx.xx.xx:1202”
- 查询“#server_port=1099”在下方添加一行“server_port=1202”
- 查询“#server.rmi.ssl.disable=false” 在下方添加一行“server.rmi.ssl.disable=true”,保存文件退出
3.2 管理机双击“jmeter.server.bat”重启服务使端口生效
出现本机ip表示配置成功了(此弹框不用关闭,保持后台运行)
3.3 启动jmeter软件,工具栏->运行->远程启动,就能看到所有负载机ip了
4、管理机运行
4.1 运行步骤
- 管理机将测试脚本发送给负载机,保证负载机能正常运行测试脚本
- 负载机,保持电脑开机联网,jmeter不用打开也能正常调用
- 管理机,在jmeter脚本添加【聚合报告】来查看所有负载机执行情况
- 管理机,可以修改线程数、循环次数、接口启用禁用等,分布式压测时会根据管理机最新的脚本运行
- 管理机工具栏->运行->远程所有启用,就能远程调用所有负载机执行脚本了
4.2 如果管理机远程启动所有,弹出报错“java.io.FileNotFoundException: rmi_keystore.jks (系统找不到指定的文件。)”
则管理机需要检查/jmeter/bin/jmeter.properties文件,这行代码“server.rmi.ssl.disable”是否为true
4.3 如果管理机远程启动所有,弹出某个ip连接拒绝报错“java.net.ConnectException: Connection refused: connect”
该ip电脑进入jmeter安装目录下,双击“/jmeter/bin/jmeter.server.bat”出现弹框后不要关闭此弹框,管理机远程启动所有就不会连接拒绝报错了。后边分布式压测此弹框也会持续输出Starting...Finished
6、查看运行结果
线程组设置的线程数=2,循环次数=2
分布式压测调用2台负载机,最终运行结果为2*2*2=8次
聚合报告,汇总了所有机子请求的执行情况