接口性能测试,这个还真有用啊。

news2024/11/25 20:38:31

目录:导读

一、概述

二、为什么要做接口压力测试

三、接口压力测试的局限性

四、谁来做接口压力测试

五、如何做接口压力测试

六、如何设计接口压力测试方案

七、压力测试报告应该包含哪些结果

八、如何解读压力测试的结果

九、如何根据测试结果定位性能问题

十、修复性能问题

十一、其他

结语


一、概述

性能测试按照不同视角,可以分为以下几类:
a. 用户视角的性能
用户角度感受到的网站响应速度的快和慢。从用户在浏览器输入网址/打开应用,到整个页面呈现给用户的耗时。包含了用户端发送请求,服务端收到并执行请求,返回请求,客户端收到之后渲染的总时间。

b.开发人员视角的性能
包括系统吞吐量,并发处理能力,系统稳定性,响应延迟等。如果发现有不满足要求的地方,需要定位出问题所在,并给出解决方案。
c.运维
主要关注基础设施性能和资源利用率,如网络运营商带宽能力,服务器应急配置,数据中心网络架构,服务器和网络带宽的资源利用率等。

二、为什么要做接口压力测试

1.清楚自己所提供的接口性能是多少
2.判断出系统可能存在的问题(代码,DB,cache,系统配置,容量等),提前解决
3.为设置接口的限流/熔断做参考
 

三、接口压力测试的局限性

接口压力测试只注重单业务的接口性能,进行压测的时候,只关注个别接口的性能。
接口大部分时间是在线下进行,可能线上线下机器配置不一样,而且线上同时在进行着各种不同的业务。
因此在线下进行接口压力测试的结果,只能作为线上配置的一个参考值。
 

四、谁来做接口压力测试

对接口比较熟悉的开发人员来做,这样有以下好处:
1.对接口实现比较了解,对接口中潜在的问题有一定的预判
2.比较容易对接口进行优化(业务逻辑层面和技术层面)。
 

五、如何做接口压力测试

通常使用 Jmeter ,loadRunner 等进行压力测试。
 

六、如何设计接口压力测试方案

如何确定并发数:
可以通过尝试的方式。第一次压测的时候,可以设置自己预期接口需要达到的并发数,进行压力测试。然后通过二分法进行调整。
举例:如果期望的并发数是512 ,第一次压测并发数设置为512 ,如果系统没有压力,第二次并发就尝试设置为1024。如果系统有压力,下次就设置为256。通过逐渐尝试的方式,找出当前接口的并发阈值。

如何确定总请求次数:
有时候单纯的通过并发数并不能完全发现系统的压力状况,因为并发数只能测出系统的处理能力。
但是有时随着长时间的调用,系统可能会出现其他问题。比如:随着数据量的增多,存储磁盘满了、内存缓存用光,缓存服务使用磁盘缓存而拖慢系统等情况。
为了避免这种情况,可以尝试用现有线上业务每天产生的数量乘以一定的天数(天数的大小视业务的具体情况而定,推荐180天以上),作为接口压力测试的总请求次数。

接口压力测试数据的选取:
通常随机选择数据。但是要注意重复进行压力测试对性能的影响。
比如:
第一次压测的 Id 是从2500W 到2600W 之间选择的,下次用同样的 Id 范围做压测的时候,如果接口实现中有缓存,则会很大程度影响压力测试的结果,对压力测试的解读时候,要考虑到这个因素。
另外,使用不存在的 Id 去进行压测,结果并没有太大意义。

 

七、压力测试报告应该包含哪些结果

接口压力测试结果

服务器压力

每次接口压力测试时,接口所在服务的服务器 cpu/jvm 使用率历史记录,jvm堆大小,响应时长图 (借助 pinpoint 查看),cpu load 值(top 命令),gc 信息等。

 

八、如何解读压力测试的结果

对于接口压力测试结果:
关注 响应时间是否符合要求,响应时间(前99%) 是不是在可允许的范围内。最大值是多少,是否可以容忍。 通常来说,错误百分比应该为0。

对于服务器压力:
看 cpu 使用率是否在可接受范围内,jvm 堆大小是否变化频繁,是否有 fullGC。Young GC 耗时,CPU load值是否在可接受范围内。 响应时长图是否平滑(如果有毛刺现象,需要找出原因)。

 

九、如何根据测试结果定位性能问题

1.响应时间不符合要求:
通过 pinpoint 观察调用链,找出耗时比较长的步骤,进行优化

2.并发数达不到要求,可以从以下几个方面进行考虑:
a 是否发生系统依赖资源争用(比如:数据库连接,业务处理线程数等)

b 业务流程/代码性能是否可以优化 c 在运行的过程中是否频繁 GC

3. CPU 使用率过高:
a 在运行的过程中是否频繁 GC

b是否发生过多的线程切换 c 程序中是否有比较耗 cpu 的代码

cpu 内存 磁盘 io 网络 io 服务器 top 命令 vmstat pidstat / iostat

sar jvm java mission Control 工具 jmap 命令,结合eclipse mat 工具进行分析

全链路:pinpoint

十、修复性能问题

除了只可能在极端压力测试情况下会发生的性能问题,并且修复代价过大的问题可以不进行修复(但是要在压力测试报告中体现出来此问题,以及解决方案),其他问题都必须进行修复。

十一、其他

如果没有专门的接口压力测试环境,记得做完接口压力测试之后,将测试数据清除(缓存,数据库,消息中间件中未消费完毕的消息 等)。

结语

这篇贴子到这里就结束了,最后,希望看这篇帖子的朋友能够有所收获。

如果你觉得文章还不错,请大家 点赞、分享、留言 下,因为这将是我持续输出更多优质文章的最强动力!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Pandas提取数据的几种方式

文章目录前言Pandas读取数据的几种方式1. read_csv2. read_excel3. read_sql总结前言 快期末了,数据挖掘的大作业需要用到python的相关知识(这太难为我这个以前主学C的人了,不过没办法还是得学😂),下面是我…

[附源码]计算机毕业设计Python的疫苗接种管理系统(程序+源码+LW文档)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等…

算法刷题打卡第50天:排序数组---快速排序

排序数组 难度:中等 给你一个整数数组 nums,请你将该数组升序排列。 示例 1: 输入:nums [5,2,3,1] 输出:[1,2,3,5]示例 2: 输入:nums [5,1,1,2,0,0] 输出:[0,0,1,1,2,5]快速排…

安科瑞霍尔闭环电流传感器在电动观光旅游车上的应用浅析

摘要: 本文介绍了基于霍尔闭环原理,即磁平衡式原理的电流传感器在电动观光旅游车上的使用方法,替代传统的霍尔器件,较好的解决了电动车行业现有霍尔传感器的基本问题,在稳定性上更加优越。 关键词:霍尔闭…

Linux----tr命令详细使用方法

【原文链接】Linux----tr命令详细使用方法 文章目录一、tr命令使用方法1.1 tr命令的作用1.2 tr命令格式1.3 tr命令常用的选项1.4 常用的匹配字符串二、tr命令常用实例2.1 如何查看文本中的控制字符2.2 将所有小写字母转换为大写字母2.3 将文件中的数字替换为&符号2.4 对命令…

android studio 升级 Dolphin | 2021.3.1 Patch 1 跟 View.isInEditMode,xml无法预览

最近一段时间Google又更新了AS的版本,一些小伙伴尝试了更新,发现在之前版本上好好的xml布局预览,在新版本上不显示了,新版本如下图所示。 一般来说出了新版本之后我们不会马上更新,因为会觉得新版本不稳定,问题多,但其实是问题不大,解决了就好了,那么我现在就遇到了一…

毕业设计 - 基于JSP的超市积分管理系统【源码 + 论文】

文章目录前言一、项目设计1. 模块设计系统功能需求管理员功能柜员功能2. 实现效果二、部分源码项目源码前言 今天学长向大家分享一个 web项目: 基于JSP的超市积分管理系统 一、项目设计 1. 模块设计 系统功能需求 (1)柜员信息的管理:包括…

交换机端口震荡

交换机端口是支持网络连接和通信的物理网络组件。作为 IT 基础架构的关键部分,它们通过在 OSI 数据链路层转发和接收数据包来促进网络。它们还执行一些关键的网络功能,例如处理第 3 层数据包、创建和管理 VLAN、连接路由器、启用互联网连接等。因此&…

Arweave -- 永久性存储分享

Arweave Arweave 是一种新型存储,它支持具有可持续和永久的数据,允许用户和开发人员真正永久地存储数据 Arweave 项目,以前称为 Archain,正在创建一个与互联网平行的永久、去中心化和不可审查的信息档案。Arweave 的新颖“block…

技术分享 | 软件测试入门必会-流程管理平台

JIRA 是目前比较流行的测试流程管理系统,现在很多大厂使用的都是 JIRA。为什么大厂更爱用 JIRA 呢?其实就是因为它的定制性非常的强。可以自己定义流程,自己定义界面,自己定义字段。通过这些自定义的方式,就可以让整个…

特殊情况的高新技术企业成长性计算方法。

根据文件《高新技术企业认定管理工作指引》(国科发火〔2016〕195号)规定,选取企业净资产增长率、销售收入增长率等指标对企业成长性进行评价。企业实际经营期不满三年的按实际经营时间计算,计算方法如下: 成长性评分标…

【数据结构初阶】反转链表

文章目录问题描述:思路分析:代码展示:问题描述: 给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。 数据…

【计算机毕业设计】79.勤工助学管理系统源码

一、系统截图(需要演示视频可以私聊) 摘 要 随着我国教育需求不断增加,高校教育资源有限,教育经费相对不足的情况下,利用现代信息技术发展高等教育,不仅充分利用了优秀的教育资源,而且为更多的…

迅为3A5000_7A2000开发板龙芯LoongArch架构

迅为3A5000_7A2000开发板龙芯LoongArch架构 主要参数 处理器: 龙芯3A5000 主频: 2.3GHz-2.5GHz 桥片: 7A2000 内存: 8GB、16GB DDR4带ECC纠错(配置可选) 系统: Loongnix 典型功耗: 35W 核心板: 16层 底板: 4层 核心板参数 尺寸: 125*95mm CPU: 龙芯…

J-004 Jetson电路设计之HDMI设计--NANO XAVIER NX

HDMI电路设计1 简介2 框图介绍3 原理图介绍1 简介 NANO & XAVIER NX提供一路HDMI接口,DP接口与HDMI是兼容的,可用于扩展一路HDMI。其中引脚说明: PIN名称描述方向类型63HDMI_DP_TXDN0DisplayPort 1 Lane 0 or HDMI Lane 2输出HDMI/DP65HDMI_DP_TXD…

高阶数据结构--图

本篇主要是介绍:图的一些常用的算法。 文章目录 一、图的基本概念二、图的存储结构 1、邻接矩阵2、邻接表三、图的遍历 1、广度优先遍历2、深度优先遍历四、最小生成树 1、Kruskal算法2、Prim算法五、最短路径 1、单源最短路径--Dijkstra算法2、单源最短路径--Bellm…

postgres 源码解析 45 btree分裂流程_bt_split

B树简介 B树一种多路平衡树,有如下特点: m阶B树表示每个节点最多含有m-1个元素,除了根节点之外,每个节点至少含有ceil(m/2)-1个元素。如5阶B树,每个节点最多4个元素,除根节点之外最少含有2个元素&#xf…

Java异常(Exception)处理及常见异常

很多事件并非总是按照人们自己设计意愿顺利发展的,经常出现这样那样的异常情况。 例如: 你计划周末郊游,计划从家里出发→到达目的→游泳→烧烤→回家。 但天有不测风云,当你准备烧烤时候突然天降大雨,只能终止郊游提…

Qt扫盲-QTableWidget理论总结

QTableWidget理论总结1. 概述2. QTableWidgetItem 概述3. 表头设置4. 常用功能5. 常用信号6. 槽函数7. 外观1. 概述 QTableWidget 是 Qt 提供的一个简单方便、标准的表格显示类。QTableWidget 中的 单元格数据 由 QTableWidgetItem 显示如果 想要一个使用你自己定义modle 的表…

MR案例(3):计算学生成绩(总分和平均分)

文章目录一、 任务目标1. 准备数据二、实行任务1. 创建Maven项目2. 添加相关依赖3. 创建日志属性文件4. 创建成绩映射器类5. 创建成绩驱动器类6. 启动成绩驱动器类,查看结果7. 创建成绩归并器类8. 修改成绩驱动器类9. 启动成绩驱动器列,查看结果一、 任务…