使用Jmeter进行压测的一个基本流程是:本地通过Jmeter的GUI界面调试好脚本-》脚本上传到发压机器-》发压机器通过命令行方式执行脚本进行压测-》回传压测结果文件-》通过本地Jmeter的GUI界面查看各项压测数据
1.windows环境核linux环境安装
1.1 本地windows下载安装
注意:本地已经安装好JDK并配置好环境变量,建议JDK8,其它版本不知道是否会有不兼容情况
下载地址,直接下载zip格式就好,本地解压就可以使用。
1.2 linux环境发压机器安装
注意:建议所有操作先切换至root用户下执行,否则可能出现各种莫名其妙的环境问题
- 登录到发压机器
- 安装jdk8并配置好环境变量
- 上传本地环境下载的Jmeter的zip包到工作目录(上传方式例如:xftp、rz命令等)
- 配置Jmeter的环境变量(
vim /etc/profile
添加如下配置并保存,source /etc/profile
使配置生效)
export JMETER_HOME=/data/luzaichun/apache-jmeter-5.2.1
export PATH=$JMETER_HOME/bin:$PATH
export CLASSPATH=$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar:$CLASSPATH
- 使用jmeter -v检查是否安装配置好,正常会出现如下图案
2.dubbo接口压测插件安装(压测dubbo接口才需要安装此插件)
插件下载地址
下载好以后,直接放到{JMETER_HOME}/lib/ext目录就ok(linux环境同样)
linux环境下,将下载到本地的dubbo压测插件上传到发压机器,然后放到jmeter的/lib/ext/目录。
3.windows运行jmeter
进入jmeter解压后的bin目录直接双击运行如下Jar包就可以
3.1 Dubbo接口压测
3.1.1 添加线程组
测试计划->添加->线程->线程组
3.1.2 配置线程数,多久拉起所有线程,循环次数
也可以先不设置,使用默认参数,等到线上压测时候,手动修改脚本
3.1.3 添加dubbo接口
线程组->添加→取样器→Dubbo Sample
服务提供方demo的dubbo配置。
3.1.4 本地测试脚本
如果本地无法进行脚本测试,请多次检查各项配置是确保正确,直接保存提交也可以。如:协议、注册中心地址、版本、Interface、Method、参数类型、参数值
Dubbo请求->添加→监听器→查看结果树
新增一个查看结果树,然后运行一次脚本,看请求结果是否正常,如果正常说明此脚本无问题。
点击保存按钮,会生成一个.jmx后缀的脚本文件。
3.1.5 上传脚本到发压机器并开始压测
上传jmx的脚本文件到发压服务器,可通过上文提到的文件传输助手上传
进行压测
jmeter -n -t PS-StressTest.jmx -l ./test1.jtl
- -n :表示非GUI模式运行,否则会损耗性能
- -t :指定压测脚本,如果其它目录可以指定绝对路径
- -l :表示压测结果输出到test1.jtl文件
可以通过vim修改压测脚本,来修改线程数,循环次数等等参数。压测脚本的参数,都是和GUI界面配置的参数对应的,都可以做响应修改的。
3.1.6 回传压测结果文件,通过本地GUI界面查看统计结果
添加一个监听器->汇总报告,然后浏览我们的压测结果文件,下方就能出来统计结果
使用过程中遇到的一些坑:
- 如果jmeter配置dubbo的group属性,在执行脚本时候会报些莫名奇妙错误。建议在进行dubbo接口压测时候,先不要设置provider的group,这样jmeter也不用设置。(后面测试又没问题了)
- 环境问题很恶心人,所以我建议,在做安装,上传脚本,上传dubbo接口压测插件这些动作,压测等动作都在root用户下执行
- 如果压测时候全部是Err 100%,建议检查下Duboo的接口,方法名,以及参数是否配置正确。
- 如果启动时候报如下这个错,请检查下dubbo压测插件包(jmeter-plugins-dubbo-2.7.x-jar-with-dependencies.jar)是不是正常下载完成,dubbo压测插件大小和实际大小是不是一样。