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

1 下载jmeter

官方下载地址

记一次jmeter接口压测

2 修改默认配置文件

打开bin目录下jmeter.properties

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

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

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

3 下载图形插件

官方下载地址

记一次jmeter接口压测

解压后将lib目录如下

记一次jmeter接口压测

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

新建测试计划

1 新建测试计划

记一次jmeter接口压测

或快捷键CTRL+L

2 测试计划下添加线程组

记一次jmeter接口压测

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

记一次jmeter接口压测

4 继续添加HTTP请求

记一次jmeter接口压测

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

记一次jmeter接口压测

最终测试计划总目录如下

记一次jmeter接口压测

开始测试

被测试环境

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

记一次jmeter接口压测

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

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

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

1 设置线程数100

记一次jmeter接口压测

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

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

记一次jmeter接口压测

记一次jmeter接口压测

记一次jmeter接口压测

记一次jmeter接口压测

2 设置线程数200

记一次jmeter接口压测

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

结果树依旧全部正常

记一次jmeter接口压测

记一次jmeter接口压测

记一次jmeter接口压测

记一次jmeter接口压测

3 设置线程数300

记一次jmeter接口压测

依旧先清除再启动。

结果树依旧全部正常

记一次jmeter接口压测

记一次jmeter接口压测

记一次jmeter接口压测

记一次jmeter接口压测

4 设置线程数500

记一次jmeter接口压测

依旧先清除再启动。

结果树依旧全部正常

记一次jmeter接口压测

记一次jmeter接口压测

记一次jmeter接口压测

记一次jmeter接口压测

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

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

记一次jmeter接口压测

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

记一次jmeter接口压测

记一次jmeter接口压测

记一次jmeter接口压测

记一次jmeter接口压测

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

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

总结

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

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

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

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

相关文章: