说明
- 本次实践是基于win虚拟机分布式压测
- 被压测网站是我自己搭建的jform论坛
为什么要压测
- 需要使用jmeter模拟大并发的情况时,单台压测机不能满足需求,可进行分布式压测。
- 简单来说就是,多台机器同时安装jmeter,选择一台机器作为调度机,其他作为压力机。进行相应的配置后,就可以用调度机操控压力机发起请求。
安装虚拟机
官方下载工具
打开后下载ios文件到本地
安装过程报错
- 出现一个类似错误
- 解决办法是禁用Hyper-V,以管理员权限打开 CMD 或 Windows PowerShell ,输入如下命令,然后重启电脑
1 | bcdedit /set hypervisorlaunchtype off |
网络设置
- 再虚拟机可以ping通主机的ip,再主机却无法ping通虚拟机ip
- 经过排查,发现虚拟机ip和主机ip的前面三个网段对不上,VirtualBox设置下虚拟机的网络方式为桥接网卡,就可以了
压力机(master控制机)
- 我装好的win10虚拟机
- 执行当前压力机下jmeter安装包bin目录下的jmeter-server的批处理文件,此时该机器上启动一个java进程,并随机分配端口,监听来自调度机的请求。
- 配置固定端口:打开bin目录下的
jmeter.properties
文件,更改server_port
、server.rmi.localport
的端口为要配置的端口。
第一个ip为本机ip,也可以作为负载机使用
把下面的选项打开设置为true
调度机(slave负载机)
- 真实机器
- 打开jmeter安装包bin目录下的
jmeter.properties
文件,更改remote_hosts
为压力机本机ip及执行jmeter-server后启动的端口。
- 把下面的选项打开设置为true,和master控制机一样
keystore配置
这样一来算是配置完成了接下来因为jmeter4.0版本及以上时,为了安全 分布式压测需要一个密匙才能正常实现 打开控制机的bin目录运行create-rmi-keystore.bat,用notepad++打开文件 复制这个命令,使用管理员运行
执行完后,会出现一个rmi_keystore.jks文件,把这个文件放到master和slave中的jmeter/bin目录中
运行
- 运行控制机jmeter.bat
- 运行负载机jmeter-server.bat
- 控制机jmeter.bat ,打开脚本,运行中看到了两个远程启动的地址,点击运行中的远程启动所有,就能看到jmeter-server.bat中日志出现(图片如上)starting(开始发请求)和finished(发送请求结束),但是我这里的虚拟机一直只有starting的日志,没有finished的日志,造成监控到的请求没有成功,可能是我的笔记本配置太差引起的,后续有条件用真机测试
其他
本机虚拟机一直无法从 starting 转变成 finished没有解决,这里有相同问题没有解决