什么是分布式压测
- 分布式测试是指通过局域网和Internet,把分布于不同地点、独立完成特定功能的测试计算机连接起来,以达到测试资源共享、分散操作、集中管理、协同工作、负载均衡、测试过程监控等目的的计算机网络测试。
jmeter分布式压测的使用场景
场景 | 说明 |
---|---|
jmeter并发数受限 | 当一台jmeter并发数达到瓶颈时,需要一台控制机、多台负载机来进行分布式压测,扩大并发数; |
压力机资源瓶颈 | 由于jmeter是java应用,对CPU和内存消耗比较大,当需要模拟数以万计的并发量时,使用单台机器就会出现电脑卡死、java内存溢出等错误。为了提高jmeter负载能力,可以使用分布式压测来控制多台电脑进行压力测试; |
模拟多IP访问接口 | 当测试多台服务器时,需要通过多个IP压测服务器时,可以使用jmeter分布式压测,同时能更好的测试出服务器的均衡负载; |
Jmeter分布式压测执行步骤
- 以Jmeter 5.2为例,准备控制机(master)和负载机(slave),JDK版本一致、Jmeter版本一致、保证在同一网络下
- 编辑控制机 jmeter的\bin\jmeter.properties配置文件
- 编辑负载机 jmeter的\bin\jmeter.properties配置文件
- 配置安全密钥,进入控制机\bin目录下,编辑create-rmi-keystore.bat文件,编辑指令 keytool -genkey -keyalg RSA -alias rmi -keystore rmi_keystore.jks -storepass changeit -validity 7 -keysize 2048 %* 如图:
- 进入jdk的\bin目录路径,查看是否有keytool.exe执行文件;在\bin目录下以管理员身份启动cmd,执行指令 keytool -genkey -keyalg RSA -alias rmi -keystore rmi_keystore.jks -storepass changeit -validity 7 -keysize 2048 ;生成密匙时会问一些问题,设置答案最后输入Y,敲击键盘enter键确认即可,如图:
- 命令运行成功后会在jdk的bin目录下生成一个rmi_keystore.jks文件,把这个文件复制到控制机与负载机的jmeter的bin目录下即可,如图:
- 运行负载机 jmeter-server文件
- 启动控制机 的jmeter,点击运行->远程启动,可以看到负载机的IP
- 启动分布式压测,可启动单台负载机,也可全部启动(如图1),负载机显示Starting说明脚本执行成功(如图2):
- (图1)
- (图2)
- 结束分布式压测,点击运行->远程停止,或者远程停止所有(如图1),负载机显示Finishing说明脚本停止(如图2):
- 图1
- 图2
注意
- 若负载机为Windows操作系统,则控制机和负载机存放脚本的路径需要保持一致(如控制机脚本存放在D盘根目录下,则负载机脚本也要放在D盘根目录下)。
- 若脚本引用了外部文件等,注意负载机中脚本引用文件的路径(如控制机脚本引用了D:\params.csv文件,负载机中脚本也要根据params.csv文件存放的路径进行相应修改)。
- 分布式压测的并发量是控制机脚本并发量*负载机个数(如控制机脚本并发10,有3台负载机,则压测时的并发量为10*3=30并发)。
- 脚本一定要增加断言,分布式压测查看结果树看不到响应数据,需要根据断言判断是否成功。