接口压测指南

一、 为什么需要进行接口压测

  • 突然有一天领导反馈他在使用产品功能时,感觉到页面有卡顿、停留时间过长
  • 客服反馈用户投诉页面加载速度慢
  • 运营推广/活动大促
  • 为了能够彻底的了解为啥慢,活动能够承接多少用户/流量,此时此刻就需要进行对相应的产品功能对应的接口进行摸底,性能压力测试

二 、接口压测的目标是什么

在做接口压测之前,需要定义清楚本次压测希望达到什么效果,符合什么样的预期,只有清晰的量化指标,才可以有效指导接口压测。

例如:在100个并发的情况下,该接口响应时间P95百分位在200ms

三、 用什么工具进行接口压测

压测工具一般有开源和自研,本文档主要罗列有哪些开源的接口压测工具

工具网址
abhttps://httpd.apache.org/docs/2.4/programs/ab.html
jmeterhttps://jmeter.apache.org/
LoadRunnerhttps://www.microfocus.com/zh-cn/products/loadrunner-professional/overview
ApiPosthttps://www.apipost.cn/

四、 接口压测核心指标

  1. 响应时间: 平均、中位数、P75、P90、P95、P99、最小值、最大值
  2. 吞吐量: 每秒能够处理多少个请求
  3. 接收报文:每秒接收多少KB的数据
  4. 发送报文:每秒发送多少KB的数据

其中响应时间、吞吐量为最核心的两个指标

4.1 JMeter的报告模板

jmeter

4.2 ApiPost报告模板

apipost

五、 接口慢如何排查

5.1 大体排查思路

  1. 确定接口的内部逻辑是怎样的,做了哪些事情
  2. 是不是资源层面的瓶颈、硬件、参数配置的问题?
  3. 针对查询类接口,是不是增加了必要的缓存?若有缓存还慢,进一步分析是不是缓存key多大?
  4. 是不是有依赖于三方接口?若有依赖,是否配置连接超时时间,读取数据超时时间?
  5. 是不是sql语句慢?(是否建立索引、是否连表查询)
  6. 是否是网络层面的问题?(带宽不足、DNS解析慢、丢包等等)

5.2 排查工具

  • Arthas可以帮忙诊断某个接口具体某个方法耗时多少
  • Prometheus或者听云APM、Skywalking收集JVM数据,内存、线程
  • Top命令查看服务器负载
  • jstack/jconsole/jstat/jhat分析JVM进程

5.3 压测经验

  • 一般情况下,我们通过优化SQL语句、合理使用缓存、串行改并行几个手段就能取得不错的效果;
  • 资源层面出问题了一般就需要进行架构调整,单纯改代码很难有质的变化;
  • 网络带宽出问题一般是一种幸福的烦恼,因为这意味着你负责的系统用户流量上来了;
  • 懂得压测比较容易,难得是如何分析压测的结果,如何采集压测期间的各种指标数据(JVM的指标、接口指标,Redis服务指标、数据库指标,Docker指标、物理机指标),如何把收集到的指标放在一起分析,解读
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Run,boy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值