记一次jmeter接口压测

需求渐缓,测一下服务器接口的tps

配置jmeter

1 下载jmeter

官方下载地址

1jmeter下载

2 修改默认配置文件

打开bin目录下jmeter.properties

# 修改软件默认语言
language=zh_CN

# 修改默认编码,解决请求返回的中文乱码
sampleresult.default.encoding=utf-8

# 修改软件字体大小
jsyntaxtextarea.font.size=25

3 下载图形插件

官方下载地址

2jmeter图形插件下载

解压后将lib目录如下

3jmeter图形插件解压目录

将其全部复制到jmeter的lib目录下

新建测试计划

1 新建测试计划

4jmeter新建测试计划

或快捷键CTRL+L

2 测试计划下添加线程组

5jmeter新建线程组

3 线程组下添加HTTP信息头管理器

6jmeter新建HTTP信息头管理器

4 继续添加HTTP请求

7jmeter新建HTTP请求

5 依次添加查看结果树,响应图,TPS图,汇总图

8jmeter新建查看结果树

最终测试计划总目录如下

9jmeter测试计划总目录

开始测试

被测试环境

1 被测试服务器为阿里云共享内存型,1核,8G, I/O优化

10jmeter被测试服务器配置

2 被测试服务器有网关nginx(暂时注释掉limit_conn_zone和limit_req_zone配置) + gateway

3 被测试接口为一个查询接口,背后涉及四个表,以及实体的业务逻辑封装,单次查询返回数据514kb

下面开始测试,线程组循环次数都设为10

1 设置线程数100

11jmeter线程组配置1

先从100线程组开始。设置好后,右键线程组,启动。

结果树中,全部请求正常返回

12jmeter查看结果树1

13jmeter响应图1

14jmeterTPS图1

15jmeter汇总图1

2 设置线程数200

16jmeter线程组配置2

先右键查看结果树,响应图,TPS图,汇总图,点击清除以删除历史数据。然后右键线程组,启动。

结果树依旧全部正常

17jmeter查看结果树2

18jmeter响应图2

19jmeterTPS图2

20jmeter汇总图2

3 设置线程数300

21jmeter线程组配置3

依旧先清除再启动。

结果树依旧全部正常

22jmeter查看结果树3

23jmeter响应图3

24jmeterTPS图3

25jmeter汇总图3

4 设置线程数500

26jmeter线程组配置4

依旧先清除再启动。

结果树依旧全部正常

27jmeter查看结果树4

28jmeter响应图4

29jmeterTPS图4

30jmeter汇总图4

5 线程数600,700的情况和500差不多,略

6 线程数800,终于出现了错误

31jmeter线程组配置5

结果树中应该有几个红色的HTTP请求结果,返回code为502。这里结果太多了,找不到。。。

32jmeter查看结果树5

33jmeter响应图5

34jmeterTPS图5

35jmeter汇总图4

这里可以看到0.05%的请求失败了。按8000算的话,就是有4个请求失败了。

还有一点,为什么最后统计中样本只有7980,少了20个。这个我也不知道,jmeter跑到后面就不动了,最后我手动停止了线程组,试了几次都这样。如有大佬知道,欢迎评论区告知,谢谢~

总结

  • 开始时,随着线程数增加,TPS略上升,服务器还没用力;
  • 300线程数时到达顶峰200左右;
  • 再继续加码,一段线程数(500~700)内仍然能保证可用性,TPS也只略微下降,180左右;
  • 直至800线程数,出现了请求失败的情况,TPS也因此非常低,只有22

除了服务器配置,系统及nginx参数优化,接口响应时间应该是对结果影响更大的。

这里我特意挑了一个逻辑稍微复杂的查询接口,更能测到瓶颈。

下次有空换个简单接口测,看看能不能超过200。目标,先定一个300吧~

原文地址:https://www.cnblogs.com/tenny-peng/p/13083200.html