2 JMeter集群搭建&分布式测试
一、集群搭建
- 使用3台linux服务器作为集群进行集群搭建「linux和本地IP不同域,数据不能回流<忽略>
- 下载jdk「master主机版本不要太高,目前使用的是1.8.0_301」和jmeter「版本5.4.1」,放到统一的目录下方便维护「/root/env」
- 下载的文件为压缩包格式,需要使用tar命令对其进行解压
Apache tar -zxvf jdk-8u301-linux-x64.tar.gz tar -zxvf apache-jmeter-5.4.1.tgz |
解压完成后配置环境比那里,这里修改~/.bashrc
Apache # java series JMETER_HOME=$HOME/env/apache-jmeter-5.4.1 JAVA_HOME=$HOME/env/jdk1.8.0_301 PATH=$PATH:$JAVA_HOME/bin:$JMETER_HOME/bin export PATH export JAVA_HOME |
- 编辑完成后使用source命令ling令其生效,然后输入echo $PATH和echo $JAVA_HOME进行验证设置是否正确
- 测试需要用到的数据放到指定定路径「/root/env/auto/Jmeter/data」具体数据按照路径进行划分,编写csvreader时使用相对路径即可
- Master机器配置:
- 修改apache-jmeter-5.4.1 /bin/jmeter.properties
Bash # 远程slave,如果需要的话可以把自己的IP也加上 remote_hosts=10.x.xx.xx server.rmi.ssl.disable=true # set jmeter visible properties jmeter.save.saveservice.bytes=true jmeter.save.saveservice.sent_bytes=true jmeter.save.saveservice.label=true jmeter.save.saveservice.latency=true jmeter.save.saveservice.response_code=true jmeter.save.saveservice.response_message=true jmeter.save.saveservice.successful=true jmeter.save.saveservice.thread_counts=true jmeter.save.saveservice.thread_name=true jmeter.save.saveservice.time=true jmeter.save.saveservice.connect_time=true # Timestamp format - this only affects CSV output files # legitimate values: none, ms, or a format suitable for SimpleDateFormat jmeter.save.saveservice.timestamp_format=ms jmeter.save.saveservice.timestamp_format=yyyy/MM/dd HH:mm:ss.SSS |
修改apache-jmeter-5.4.1 /bin/jmeter-server
Bash # hostname为当前设备的IP地址 RMI_HOST_DEF=-Djava.rmi.server.hostname=10.x.xx.xx |
Slave机器配置:
- jmeter.properties中只要将remote_hosts保持默认127.0.0.1不变,其他设置与Master配置保持一致
- jmeter-server与Master配置保持一致
- 配置部分结束,以上「除了data部分」都是一次性的操作,操作仅供参考,如果没有需求,不要随便修改配置信息!!!
- 配置从机的环境已经写好了部署环境的脚本: https://slowisfast.feishu.cn/drive/folder/fldcnQLG1u7klk8g0PgCEtJKN6b,下载好脚本后根据环境执行「windows执行build.bat|linux/mac执行build.sh」;master的配置需要先执行build脚本,然后按照「一、集群搭建 -> 7 Master机器配置」修改配置接口
二、工具准备
- 首先我们需要连接远程设备,需要用到ssh相关的内容,这里推荐下载vscode作为我们的工具协助测试,下载链接:https://az764295.vo.msecnd.net/stable/7f6ab5485bbc008386c4386d08766667e155244e/VSCodeUserSetup-x64-1.60.2.exe「如果觉得下载速度比较慢可以替换域名:vscode.cdn.azure.cn」
- 安装好之后需要用到一些插件,其中目前可以用到的就是Remote-ssh(远程连接ssh插件)、rainbow csv(csv高亮显示插件)、Edit csv(编辑csv文件的插件)「点击左侧插件小方块的图标 >> 搜索插件名称 >> 选择需要的插件安装 >> 安装好ssh后左侧会有一个电脑的图标就表示安装成功了,其他插件提示安装成功即可」
- 配置远程连接信息
步骤:
- 将鼠标悬浮在SSH TARGETS上面或者点击SSH TARGETS直到显示右侧的菜单按钮
- 点击小齿轮按钮
- 选择.ssh/config的选项「前面的用户名不用管,这个是计算机的用户」
- 编辑连接信息后保存「IdentityFile是连接证书的地址,这里根据具体的位置修改,下载证书后自己找个位置存放,建议放到用户下的.ssh文件夹下面统一管理比较好一点,然后修改IdentityFile后面的路径,IdentityFile在windows直接写绝对路径,例如C:\Users\Administor\.ssh\jmeter_remote.pem」
Apache Host jmeter_10.1.60.7_M HostName 10.1.60.7 User root IdentityFile ~/.ssh/jmeter_remote.pem Host jmeter_10.1.60.13_S HostName 10.1.60.13 User root IdentityFile ~/.ssh/jmeter_remote.pem Host jmeter_10.1.60.14_S HostName 10.1.60.14 User root IdentityFile ~/.ssh/jmeter_remote.pem Host jmeter_10.1.60.17_S HostName 10.1.60.17 User root IdentityFile ~/.ssh/jmeter_remote.pem Host jmeter_10.1.60.4_S HostName 10.1.60.4 User root IdentityFile ~/.ssh/jmeter_remote.pem |
三、分布式测试
- 使用vscode连接jmeter集群「点击框中的图标即可连接,首次连接可能需要在远程装一些内容,可以稍微等待一下」
2.连接成功后左下角会显示对应的信息「点击左上角的文本按钮,会打开资源管理器,然后点击打开管理器可以查看linux里面的文件,然后以目录树的形式展示,这也是vscode插件的一大亮点」
3.连接好3台设备后,将jmx脚本放到Master的Jmeter目录下、csv数据放到Master以及Slave的data目录下然后在Slave机器上使用快捷键ctrl + ~打开命令行窗口,cd /root/env/auto/Jmeter进入对应目录后输入jmeter-server启动服务
4.在Master机器上,进到要执行jmx的目录「或者-t参数直接输入具体jmx 的路径也可以」,输入命令开始测试「jmx是脚本的位置,根据具体场景输入对应的jmx路径进行运行」
Bash jmeter -n -t wego.jmx -l res.csv -r |
5.运行完成后,Master查看jmeter.log,Slave查看jmeter-server.log,看运行过程中服务有没有异常
6.将csv内容转成html报告
Bash jmeter -g res.csv -o report |
7.查看html报告「在Master10.1.60.7主机上查看,Master主机里装了html预览插件,『不过这个插件在点击按钮的时候有点问题,后续采用live server的方式方式访问「右键html文本内容区域,选择Open with Live Server进行打开」』」
Bash jmeter -n -t wego.jmx -r -l res.csv -e -o report |