0%

分布式压测

说明

  • 本次实践是基于win虚拟机分布式压测
  • 被压测网站是我自己搭建的jform论坛

为什么要压测

  • 需要使用jmeter模拟大并发的情况时,单台压测机不能满足需求,可进行分布式压测。
  • 简单来说就是,多台机器同时安装jmeter,选择一台机器作为调度机,其他作为压力机。进行相应的配置后,就可以用调度机操控压力机发起请求。

安装虚拟机

  • 官方下载工具

    image-20211029180146221

  • 打开后下载ios文件到本地

安装过程报错

  • 出现一个类似错误

image-20211029180545713

  • 解决办法是禁用Hyper-V,以管理员权限打开 CMD 或 Windows PowerShell ,输入如下命令,然后重启电脑
1
bcdedit /set hypervisorlaunchtype off

网络设置

  • 再虚拟机可以ping通主机的ip,再主机却无法ping通虚拟机ip
  • 经过排查,发现虚拟机ip和主机ip的前面三个网段对不上,VirtualBox设置下虚拟机的网络方式为桥接网卡,就可以了

image-20211029163300356

压力机(master控制机)

  • 我装好的win10虚拟机
  • 执行当前压力机下jmeter安装包bin目录下的jmeter-server的批处理文件,此时该机器上启动一个java进程,并随机分配端口,监听来自调度机的请求。
  • 配置固定端口:打开bin目录下的jmeter.properties文件,更改server_portserver.rmi.localport的端口为要配置的端口。

image-20211029173427158

  • 第一个ip为本机ip,也可以作为负载机使用

  • 把下面的选项打开设置为true

    image-20211029173713156

调度机(slave负载机)

  • 真实机器
  • 打开jmeter安装包bin目录下的jmeter.properties文件,更改remote_hosts为压力机本机ip及执行jmeter-server后启动的端口。

image-20211029173856668

  • 把下面的选项打开设置为true,和master控制机一样

image-20211029173713156

keystore配置

  • 这样一来算是配置完成了接下来因为jmeter4.0版本及以上时,为了安全 分布式压测需要一个密匙才能正常实现 打开控制机的bin目录运行create-rmi-keystore.bat,用notepad++打开文件 复制这个命令,使用管理员运行

    image-20211029174237855

  • 执行完后,会出现一个rmi_keystore.jks文件,把这个文件放到master和slave中的jmeter/bin目录中

运行

  • 运行控制机jmeter.bat
  • 运行负载机jmeter-server.bat

image-20211029174523893

  • 控制机jmeter.bat ,打开脚本,运行中看到了两个远程启动的地址,点击运行中的远程启动所有,就能看到jmeter-server.bat中日志出现(图片如上)starting(开始发请求)和finished(发送请求结束),但是我这里的虚拟机一直只有starting的日志,没有finished的日志,造成监控到的请求没有成功,可能是我的笔记本配置太差引起的,后续有条件用真机测试

image-20211029174949327

其他