SpringBoot学习之JMeter压测
JMeter入门
jmeter是apache公司基于java开发的一款开源压力测试工具,体积小,功能全,使用方便,是一个比较轻量级的测试工具,使用起来非常简单。因为jmeter是java开发的,所以运行的时候必须先要安装jdk才可以。jmeter是免安装的,拿到安装包之后直接解压就可以使用,同时它在linux/windows/macos上都可以使用。
jmeter可以做接口测试和压力测试。其中接口测试的简单操作包括做http脚本(发get/post请求、加cookie、加header、加权限认证、上传文件)、做webservice脚本、参数化、断言、关联(正则表达式提取器和处理json-json path extractor)和jmeter操作数据库等等。
JMeter的官方网站:http://jmeter.apache.org/
JMeter的参考手册:http://jmeter.apache.org/usermanual/get-started.html
具体的使用参考官网就可以了。
## Windows下的压测
### Jmeter-http接口脚本
一般分五个步骤:(1)添加线程组 (2)添加http请求 (3)在http请求中写入接入url、路径、请求方式和参数 (4)添加聚合报告 (5)调用接口、查看返回值
(1)添加线程组:

(2)添加http请求:

(3)在http请求中写入接入url、路径、请求方式和参数 :

(4)添加聚合报告和图形结果或查看结果树:

聚合报告只是总体的进行解析压测结果。
(5)调用接口、查看返回值:
同时启动1000个线程:

### JMeter 自定义变量
新建http请求,添加token:

压测之后能够看到自己添加的token,

还能看到返回的数据

## JMeter读取自定义文件模拟多用户
需要在线程组里面添加配置元件-CSV Data Set Config,添加文件和自定义文件中对应的变量名
其中遇到文件结束符再次循环(Recycle on EOF):设置True后,允许循环取值


引入
${userToken}
,与你定义的变量名相同。## Linux下使用JMeter压测
首先在Windows下创建一个压测,然后存为.jmx文件。上传至Linux下
执行
1 | ./apache-jmeter-4.0/bin/jmeter.sh -n -t goods_list.jmx -l result.jtl |
这样就可以得到 result.jtl数据了,可以查看结果
当然也可以直接在Linux下直接测试,我这是为了方便就这么做了。
redis 压测
看一下redis服务是否在运行
1 |
|
执行:
1 | redis-benchmark -h 127.0.0.1 -p 6379 -c 100 -n 100000 |
-c 100 就是100个并发 -n 100000 就是100000个请求。
看一下其中的一个结果
100000个请求在2.38s内完成,有4.12%的请求在1ms内完成,一秒大概完成41963.91个请求。以3字节大小测试。
再看这条命令:
1 | redis-benchmark -h 127.0.0.1 -p 6379 -q -d 100 |
-q 就是quiet,输出少一些,-d 100是存取数据包为100字节大小的数据包,上面默认是3 字节存取的。看一下输出
只测试某些命令的性能
1 | redis-benchmark -t set,lpush -q -n 10000 |
-t set,lpush 是只测试set和lpush命令。
只测试某些数据存取的性能:
1 | redis-benchmark -q -n 10000 script load "redis.call('set','foo','bar')" |
只对’set’,’foo’,’bar’该命令做压测。