接口压测指南

接口压测指南

  • 一、 为什么需要进行接口压测
  • 二 、接口压测的目标是什么
  • 三、 用什么工具进行接口压测
  • 四、 接口压测核心指标
    • 4.1 JMeter的报告模板
    • 4.2 ApiPost报告模板
  • 五、 接口慢如何排查
    • 5.1 大体排查思路
    • 5.2 排查工具
    • 5.3 压测经验

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

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

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

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

例如:在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指标、物理机指标),如何把收集到的指标放在一起分析,解读

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/247212.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在用户不安装 ImageMagick 的情况下使用

需要以编程的方式配置环境变量(手工配置也是一样的效果) 1、首先要配置 path 将 {ImageMagick目录} 配置到path中 2、配置 MAGICK_HOME 将 {ImageMagick目录} 配置到MAGICK_HOME中 3、配置MAGICK_CODER_MODULE_PATH 将 {ImageMagick目录}\modules\…

JVM:双亲委派(未完结)

类加载 定义 一个java文件从编写代码到最终运行,必须要经历编译和类加载的过程,如下图(图源自b站视频up主“跟着Mic学架构”)。 编译就是把.java文件变成.class文件。类加载就是把.class文件加载到JVM内存中,得到一…

大模型技术的发展与实践

一、大模型的概念 大型语言模型,也称大语言模型、大模型(Large Language Model,LLM;Large Language Models,LLMs) 。 大语言模型是一种深度学习模型,特别是属于自然语言处理(NLP)的…

【五分钟】熟练使用numpy.cumsum()函数(干货!!!)

引言 numpy.cumsum()函数用于计算输入数组的累积和。当输入是多维数组时,numpy.cumsum()函数可以沿着指定轴计算累积和。 计算一维数组的累计和 代码如下: # 计算一维数组的累计和 tmp_array np.ones((4,), dtypenp.uint8) # [1, 1, 1, 1] print(&…

3.镜像加速器

目录 1 阿里云 2 网易云 从网络上拉取镜像的时候使用默认的源可能会慢,用国内的源会快一些 1 阿里云 访问 阿里云-计算,为了无法计算的价值 然后登录,登录后搜索 容器镜像服务 点击容器镜像服务 点击管理控制台 点击 镜像工具->镜像…

深度学习(五):pytorch迁移学习之resnet50

1.迁移学习 迁移学习是一种机器学习方法,它通过将已经在一个任务上学习到的知识应用到另一个相关任务上,来改善模型的性能。迁移学习可以解决数据不足或标注困难的问题,同时可以加快模型的训练速度。 迁移学习的核心思想是将源领域的知识迁…

剑指offer(C++)-JZ45:把数组排成最小的数(算法-其他)

作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 输入一个非负整数数组numbers,把数组里所有数字拼接起来排成一个数,打印能拼接出的…

leetcode 876.链表的中间结点

补充上次的环形链表没细讲的快慢指针(这三道题现在可以连起来看),希望对你做题思路有帮助 876.链表的中间结点 题目 给你单链表的头结点 head ,请你找出并返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结…

前端 --- HTML

目录 一、网络的三大基石 ​二、什么是HTML 一、HTML 指的是超文本标记语言 二、HTML的作用 三、HTML的标准结构 四、IDE_HBuilder的使用 一、编码工具: 二、集成开发环境 三、HBuilder使用步骤: 五、HTML的标签的使用 一、html_head_body 二、head…

VMware安装Ubuntu系统(Server端,Desktop端步骤一样)

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

数据库——索引的数据结构

在数据库中引入索引可以提高查询速率,那么为什么引入索引可以提高查询速率呢,其底层组织数据的数据结构又是什么呢?接下来,一起来探讨索引的数据结构吧!!! 在介绍数据库索引数据库前&#xff0…

springboot项目中注入bean后,调用时报n

需求: 在socket接收到上报数据后,在handler中调用工具类中ProtocolAnalyse的conAnalyse(byte[] data, int dataLen)解析数据。解析数据后,将解析后的结果保存至数据库。注入了三个bean: Autowiredprivate PersonTeService person…