Jmeter接口压测

参考资料

Jmeter如何配置和使用

https://www.cnblogs.com/stulzq/p/8971531.html

配置与执行

可变参数配置

参数定义:${__P(参数名,默认值)}
image.png
参数使用:在执行jmeter时,通过“-J参数名”的方式对参数进行调用
image.png

执行命令

windows版本命令

# windows版本命令
jmeter -n -t test.jmx -Jip=localhost -Jport=8000 -JthreadNum=10 -JloopNum=1 -l -Jx=34.20818280000000 -Jy=113.54014170000000 E:\test-report\test.log -e -o E:\test-report\report

linux版本命令

# linux版本命令
./jmeter -n -t test.jmx -Jip=11.8.242.14 -Jport=8000 -JthreadNum=400 -JloopNum=1 -Jx=30.58779530000000 -Jy=104.03337630000000 -l /data/test-report/test.log -e -o /data/test-report/report

测试环境压力源及脚本执行命令

压力源:

  • app:10.29.40.193
    • 脚本路径:/var/apache-jmeter-5.4.3/bin
    • 测试报告:/home/sunbox/test-report
  • 小程序:11.8.242.13
    • 脚本路径:/data/apache-jmeter-5.4.3/bin
    • 测试报告:/data/test-report

执行脚本:

APP
./jmeter -n -t test.jmx -l /home/sunbox/test-report/test.log -e -o /home/sunbox/test-report/report

小程序
./jmeter -n -t test.jmx -l /data/test-report/test.log -e -o /data/test-report/report

压测过程及结果记录

  1. 原始状态:

线程数10,循环次数1。
test-report-1#10-1
image.png

  1. 原始状态:

线程数100,循环次数1。
test-report-2#100-1
image.png

  1. 坐标计算修改为多线程

线程数100,循环次数1。
test-report-3#100-1
image.png

  1. 相对v3没有修改

线程数200,循环次数2。
CPU满负荷,全部超时,压测失败。

  1. 提升Tomcat线程数:200 -> 400

线程数200,循环次数1。
CPU满负荷,全部超时,压测失败。

  1. 提升客户端的redis连接数配置:100 -> 300

线程数300,循环次数1。
Java服务报GC异常,内存溢出。
test-report-4#300-1

  1. 优化油站缓存结构,调整为分片缓存

线程数300,循环次数1。
没有出现超时情况,效率显著提高。
test-report-5#300-1
image.png

  1. 相对v7没有修改

线程数1000,循环次数1。
test-report-6#1000-1
image.png

  1. 修改入参坐标,调整坐标为最大的HASH中的坐标,HASH大小为1476

参数:104.13370520000000,30.82013920000000
线程数500,循环次数1。
test-report-7#500-1
image.png

  1. 相对v9没有修改

线程数200,循环次数1。
test-report-8#200-1
image.png

  1. 修改应用程序的Redis连接数为默认的100,Tomcat连接数为400

线程数200,循环次数1。
test-report-9#200-1
image.png

  1. 相对v11没有修改

线程数400,循环次数1。
test-report-10#400-1image.png

  1. Tomcat连接数400,等待队列长度1000。Redis客户端连接数100。

线程数400,循环次数1。
观察nginx日志,请求的响应速度均在10ms~30ms之间。

  1. Tomcat和Redis配置同v13

线程数800,循环次数1。
观察nginx日志,接口响应速度均在10ms~30ms之间,与v13的压测结果大致相同。

  1. Tomcat和Redis配置同v13

线程数分别调整至1400、1200、1000,循环次数1。
均出现了性能衰减,接口响应速度在100ms~4000ms之间,已经出现了性能问题。

  1. Tomcat和Redis配置同v13

线程数1600,循环次数1。
出现了18%左右的请求丢失,原因是超过了Tomcat的最大连接数和最大等待队列长度之和,超过了Tomcat的请求处理能力范围。
同时,没有丢失的请求,出现了响应速度慢的现象,响应时间在3000ms~8000ms之间。

附件

测试报告及压测脚本

posted @ 2022-07-05 10:48  阿张Respect  阅读(42)  评论(0编辑  收藏  举报