本文介绍jmeter作为压力测试工具的使用,包括压测、插件配置。在最后,结合虚机,演示了jmeter配置监控服务器的实时状态,希望对大家有帮助。
另外:本文适合有一定开发经验的同学。
0、环境
- jdk:1.8
- jmeter:5.4.1
1、下载和安装
jmeter官网: 点击这里,下载jmeter相关版本。下载完成后解压,利用命令行启动(jdk必须安装且正确配置环境变量):
bin/jmeter
如果正常,能看到如下界面:
出现这个界面,说明jmeter启动成功。
1.1、有个坑
我解压并且通过命令行启动后,也能显示上面的界面,但是不能保存测试计划。查了一下,我前几天新安装了jdk 21,切换到java8,一切正常。大家注意版本对应的jdk。
2、测试计划
jmeter的压力测试的过程:测试计划 -> 线程组 -> 采样器 -> 断言->结果监听
2.1、新建测试计划
新建测试计划比较简单,给个名字即可,如下图:
2.2、添加线程组
按下图操作:
完成后,出现如下界面:
有三处我已经标出来了,测试时按自己的需求输入对应的参数。我简单解释一下:
- 线程数:大家就当同时多个用户访问来理解,一个线程对应一个用户
- Ramp-up:预热时间,实际的环境不可能立即流量上来,有一个缓存时间
- 循环次数:一个线程循环访问的次数
2.3、添加采样器
按下图操作:
出现下图界面:
这里总共有5个地方要填,主要是声明接口的详细地址,大家按自己的实际接口地址填写。我这里只是下了一个很简单的接口,调用时直接返回带时间戳的字符串。
@RequestMapping("/hello")
public String sayHello() {
log.info("sayhello() is comming!");
return "hello - " + LocalDateTime.now();
}
2.4、添加结果断言
结果断言就是调用接口后,我们如何判断接口调用成功。有开发经验的朋友,一般我们返回信息时,会用code标识实际的返回结果。我们这里实时返回了“hello - xxx”字符串,我们判断返回有“hello”就行了。
我们先添加“响应断言”:
出现如下界面:
大家注意匹配的条件,我在图上已经标识出来了。下面,咱们再添加一个响应时间断言,如下图:
也就是说,接口会在3s后调用失败,不能超过3s。
2.5、添加结果树等
大家按图操作:
不用配置什么,添加成功就行了。好了,这时候就配置完成了,可以测试了,咱们跑一把,注意先让你测试的接口跑起来。
好了,到这里,jmeter的压力测试已经配置完成了,大家照猫画虎,测试一下自己的接口。
3、测试服务器资源
在实际应用中,我们要实时了解服务器资源的利用率(cpu、内存、网络),这时可以给jmeter安装插件来实现,咱们先来安装插件。
3.1、jmeter插件安装
插件安装分两步:
- 插件管理器的安装
- 插件的安装
先安转插件管理器。访问官方的提供的地址,链接: https://jmeter-plugins.org,如下图:
下载下来后,放到jmeter/lib/ext目录下,然后重新启动jmeter。重启完成后,点击主菜单Options,如下图:
能看到,多了一个插件管理器的选项。点击进去,咱们来执行第二步:安转插件。如下图:
我们在这里总共选了3个插件,上图中没标出来。
- 3 Basic Graphs
- 5 Additional Graphs
- PerfMon (Servers Performance Monitoring)
好了,插件安装完成了。下面咱们来添加监听器。
3.2 添加PerfMon Metrics
打开后,按下图配置:
- ip:服务器的ip
- port:serverAgent对外的接口
- user/system: 配置的要监控的cpu参数
简单说一下serverAgent,他是运行中服务端的一个采集软件,可以进服务器的cpu、内存等资源采集到后,再通过指定的端口发给jmeter,默认端口是4444.
3.3、serverAgent的安装和运行
上面刚刚简单介绍了serverAgent, 先下载下来,地址: https://github.com/undera/perfmon-agent?tab=readme-ov-file。
注意:这里为了测试,我使用虚拟机了。相应地,你的项目最好也打成jar包,放到虚拟机上去跑起来。在虚机上启动serverAgent,
sh startAgent.sh
启动成功了,同时,大家注意命令最上面两行,4444,知道为什么上面端口为什么要配成4444了吧。再看一下jmeter的效果:
注意:一定要注意防火墙,有时候linux访问不通就是端口没开放!
好了,更多的功能大家去探索,今天就到这里吧。
//~~