Jmeter进行分布式压测
cywhat
·
2023-06-27
·
via 压测 - 标签 - cywhat's blog
1、前期准备
2、什么是分布式压测
1
|
分布式压力测试是指通过局域网&Internet,把不同的节点连接起来,以达到测试资源共享、分散操作、集中管理、协同工作、负载均衡、测试过程监控等目的的计算机网络测试。
|
3、注意事项
1
2
3
4
5
6
7
8
9
10
11
|
1、master和各个slave机器必须使用同一局域网,尽可能减少网络带宽的影响
2、使用非GUI模式,避免不必要的cpu、内存损耗
3、减少查看结果树/聚合报告等元件的个数
4、jdk和jmeter版本需要一致
5、有csv参数化的文件需要上传到每台slave,且路径一致
6、只保存你需要的数据,减少断言
|
4、安装jdk
5、安装jmeter
5.1、下载jmeter

5.2、上传解压
1
2
3
4
|
# 1、上传文件到服务器
# 2、解压文件
unzip apache-jmeter-5.6.zip
|
5.3、修改hosts配置
1
2
3
4
5
6
7
8
|
# 1、查看本机名
hostname
# 2、修改本机hosts
vim /etc/hosts
# 3、加入以下数据
本机ip hostname名【eg: x.x.x.x localhost】
|
5.4、修改jmeter-server配置
1
2
3
4
5
6
7
8
9
|
# 1、编辑jmeter启动文件
sudo vim jmeter-server
# 2、修改回环地址[x.x.x.x 为本机ip]
# One way to fix this is to define RMI_HOST_DEF below
RMI_HOST_DEF=-Djava.rmi.server.hostname=x.x.x.x
# 3、保存退出
: wq
|
5.5、修改jmeter.properties配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
# 1、编辑jmeter启动文件
sudo vim jmeter.properties
# 2、禁用ssl
# Set this if you don't want to use SSL for RMI
server.rmi.ssl.disable=true #[把flase改为 true 并且去掉注释]
# 3、修改启动端口
# the following property before starting the server:
server.rmi.localport=8009 # 自定义启动端口
# 4、修改远程连接端口
# RMI port to be used by the server (must start rmiregistry with same port)
server_port=8009 #自定义远程连接端口
# 保存请求和响应数据
jmeter.save.saveservice.output_format=xml
jmeter.save.saveservice.response_data=true
jmeter.save.saveservice.samplerData=true
|
5.6、启动jmeter-server
1
|
./jmeter-server #启动后没有报错且端口号为自定义的端口即为安装成功,如下图
|

6.配置其他节点压力机
1
2
3
4
5
6
7
8
9
10
|
# 编辑配置文件
sudo vim jmeter.properties
# 2、写入其他节点配置
# Remote Hosts - comma delimited
remote_hosts=10.150.31.54:8009
#remote_hosts=localhost:1099,localhost:2010
# 3、保存
:wq
|
6.1、启动其他压力机
1
|
./jmeter-server # 如图即为启动成功
|

7.master节点运行脚本
7.1、启动脚本
1
2
3
4
5
|
# 1、进入到jmeter的bin目录
cd /home/apache-jmeter-5.6/bin
# 2、执行脚本
./jmeter -n -t /home/oldtest.jmx -l /home/jmeter/result/result.jtl -JthreadNum=20 -JloopNum=1 -JrampupTime=1 -JcsvFile=/home/login-user.csv -e -o /home/jmeter/report/
|
7.2、命令详解
命令解析:
- -n : 命令行模式
- -t : 指定jmx脚本地址[最好是绝对路径]
- -l : 记录测试结果存放路径[指定路径需要给出明确的结果文件名 eg:result.jtl]
- -JthreadNum : 自定义参数[threadNum] ‘线程数’
- -JloopNum : 自定义参数[loopNum] ‘循环次数’
- -JrampupTime : 自定义参数[loopNum] ‘运行时间’
- -JcsvFile : 自定义参数[csvFile] ‘指定CSV文件路径’
- -e : 测试完成后生成测试报表
- -o : 指定测试报告生成文件夹[文件夹可以不存在&如果存在该文件夹必须为空]
对比jmeter脚本-用户自定义变量



7.3、压测结果查看
8、报告详解
8.1、dashboard详解

8.2、charts详解
-
Over Time

-
Throughput

-
Response Times

9、问题记录
问题1:
1
|
报告中的http请求会出现 -0/-1,且样本总数不符合 线程数 * 循环次数
|

问题1解决:
1
|
PS:该类问题一般出现在有重定向的接口,只需要关闭jmeter中该接口的`跟随重定向`即可
|

其他问题随时更新~
关注一下再走吧
公众号
小程序
赞赏支持
微信打赏
支付宝打赏
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。