zoukankan      html  css  js  c++  java
  • 记一次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吧~

  • 相关阅读:
    prism.js——让网页中的代码更好看
    WebAPI之FormData
    ES6背记手册
    搭建本地的百度脑图
    webpack到底是干什么用的?
    浅拷贝和深拷贝
    vue 中使用 watch 的各种问题
    跳一跳外挂的python实现--OpenCV步步精深
    Opencv基础课必须掌握:滑动条做调色盘 -OpenCV步步精深
    Opencv稍微高级点的鼠标事件-OpenCV步步精深
  • 原文地址:https://www.cnblogs.com/tenny-peng/p/13083200.html
Copyright © 2011-2022 走看看