当前位置: 首页 > news >正文

每个平台团队都应该跟踪的API指标

目录

识别关键 API 度量

基础架构/DevOps

应用工程/平台

产品管理

业务/增长

基础架构API指标

正常运行时间

CPU使用率

内存使用率

应用程序API指标

相应时间

平均和最大延迟

吞吐量

可用性

缓存命中率

每分钟错误数

每个业务事务的API调用

如何收集优化API指标


识别关键 API 度量

当涉及到API时,每个团队都需要跟踪不同的KPI。

基础架构/DevOps

确保服务器正在运行,并且正确分配有限的资源,这可能适用于多个工程团队

应用工程/平台

API开发人员负责向API添加新功能,同时调试API业务逻辑中特定于应用程序的问题。这些产品可以是API即服务、为合作伙伴提供的插件和集成、包含在更大产品中的API或其他产品

产品管理

API产品经理负责规划API功能,确保构建正确的API端点,并平衡客户需求(无论是内部还是外部)与工程时间和个人限制。

业务/增长

市场营销和销售等面向业务的团队并没有考虑API端点,而是对客户采用感兴趣,确保他们成功使用API,以及API的来源,并了解哪些用户可能成为新的销售机会。

基础架构API指标

这些指标中的许多都是应用程序性能监控(APM)工具和基础设施监控公司(如 Datadog)关注的焦点

正常运行时间

虽然正常运行时间或可用性是最基本的衡量标准之一,但它是衡量服务可用性的黄金标准。许多企业协议都包含SLA(服务级别协议),正常运行时间通常包含在其中。很多时候,你会听到三个9或四个9之类的术语,这是衡量每年正常运行时间与停机时间的指标。

当然,从4到5个9比从2到3个9要困难得多,这就是为什么除了最关键(也是最昂贵)的服务之外,你不会看到5个9。话虽如此,某些服务实际上可以降低正常运行时间,同时确保在不影响服务的情况下妥善处理停机。例如,Moesif的设计使得它可以继续从我们的SDK中收集数据,即使在网站和仪表板完全中断的情况下也是如此。即使在我们的收集网络出现故障的最坏情况下,SDK也会在本地排队,不会导致应用程序中断。

正常运行时间通常通过ping服务或合成测试来测量,例如通过Pindom或UptimeRobot。您可以将探测配置为以固定的间隔运行,例如每分钟运行一次,以探测特定的端点,例如/health或/status。该端点应该具有基本的连接测试,例如到任何备份数据存储或其他服务的连接测试。

CPU使用率

CPU使用率是最经典的性能指标之一,CPU使用率高可能意味着服务器或虚拟机正在处理大量任务或程序,也可能意味着应用程序中存在性能缺陷,例如旋转锁过多。可以使用CPU使用率和内存百分比来进行资源规划和衡量整体运行状况。

💡

自旋CAS如果长时间不成功,会给CPU带来非常大的执行开销

内存使用率

与CPU使用率一样,内存使用率也是衡量资源使用率的一个很好的指标,因为CPU和内存容量是物理资源,而不是可能更依赖于配置的指标。

内存使用率极低的虚拟机可以缩小规模,也可以为该虚拟机分配额外的服务以消耗额外的内存。另一方面,高内存使用率可能是服务器过载的指标。传统上,大数据查询/流处理和生产数据库比CPU消耗更多的内存。事实上,每个虚拟机的内存大小可以很好地指示批处理查询所需的时间,因为更多的可用内存可以减少检查点、网络同步和磁盘分页。在查看内存使用情况时,还应该查看页面错误和I/O操作的数量。一个容易犯的错误是,应用程序被配置为最多只分配一小部分可用物理内存,这可能会导致人为的高页面虚拟内存抖动。

应用程序API指标

API性能指标是用于评估应用程序编程接口(API)的效率、可靠性和总体功能的可测量值。这些指标有助确定问题,优化功能,并确保与其他应用程序的无缝集成。

相应时间

API处理请求并返回响应所用的时间,通常以毫秒为单位。响应时间越短,表示性能越高。

平均和最大延迟

API延迟是指数据或请求从源到目的地所需的时间。延迟以毫秒为单位。延迟越接近于零越好,相反则对用户体验产生负面影响。当出现API延时主要考虑从应用层、数据库层排查。比如索引失效、代码缺陷。

吞吐量

API 每单位时间处理的请求数,通常以每秒请求数(RPS)来衡量。对于处理大型工作负载的 API 来说,高吞吐量是理想的。

可用性

API可供使用的时间百分比,通常以总时间的百分比来衡量。高可用性对于确保可靠和健壮的API至关重要。

缓存命中率

从缓存而不是直接查询数据源提供服务的API请求的百分比。较高的缓存命中率通常会减少响应时间和服务器负载,从而获得更好的性能。

每分钟错误数

每分钟错误(或错误率)是每分钟非200个状态代码系列的 API 调用的数量,对于测量 API 有多少错误和容易出错是至关重要的。高错误率表明API存在问题,例如代码错误、资源不足或网络问题等外部因素。通过识别和解决这些问题,可以降低错误率,并提供更可靠、高效的API,为用户提供一致的性能。

每个业务事务的API调用

如果一个API需要进行三次以上的操作才能把数据拼接在一起返回到调用者说明API可能需要重新设计。在设计API时需要从业务事务和调研者的目标角度来考虑。比如如何设计过滤条件、分页。

如何收集优化API指标

定期分析收集的指标并确定需要改进的方面来优化API性能。关键步骤包括完善代码逻辑优化数据库查询改进服务器基础设施实现缓存机制以及使用CDN来减少延迟。通过持续监控性能指标并实施改进,可以确保其API保持健壮高效,为用户提供可靠、高质量的服务。

跟踪诸如响应时间,成功请求率,错误率,数据吞吐量和可用性等指标至关重要。通过密切监视这些指标,可以识别性能瓶颈,诊断技术问题并实施更改以改善整体用户体验。


延伸阅读

如何版本REST API:综合指南-CSDN博客

如何设计 API: 基本指南 + 最佳实践-CSDN博客

金融行业业务流程指南-三级模型-CSDN博客

相关文章:

每个平台团队都应该跟踪的API指标

目录 识别关键 API 度量 基础架构/DevOps 应用工程/平台 产品管理 业务/增长 基础架构API指标 正常运行时间 CPU使用率 内存使用率 应用程序API指标 相应时间 平均和最大延迟 吞吐量 可用性 缓存命中率 每分钟错误数 每个业务事务的API调用 如何收集优化API指…...

Windows 11 24H2版本有哪些新功能_Windows 11 24H2十四大新功能介绍

距离上次发布的23H2版本已经过去了一年时间,现在,Win 11的24H2版本终于等到了,微软已经全面公开发布Win11 24H2版本,版本号为26100.1742,此次官宣的版本包括了消费者版、商业版、LTSC 2024版等,各种语言版本…...

渗透测试 之 AD域渗透 【Kerberoasting】 攻击技术讲解 对应得工具详细介绍哟~ 以及相关示例 按照步骤做你也会哟

说明 Kerberoasting 攻击发生在Kerberos协议的TGS_REP阶段,KDC的TGS服务返回一个由服务Hash加密的ST给客户端。由于该ST是用服务Hash进行加密的,因此客户端在拿到该ST后可以用于本地离线爆破。 攻击的过程 攻击者提供一个正常的域用户密码对域进行身份…...

如何在Ubuntu上更改MySQL数据存储路径

文章目录 0 背景1 备份现有数据库数据2 停止 MySQL 服务3 复制现有的 MySQL 数据到新目录4 修改 MySQL 配置文件5 更新 AppArmor 或 SELinux 配置(如有启用)6. 修改 MySQL 系统文件中的 datadir7. 启动 MySQL 服务8. 验证更改参考资料 0 背景 在原先划分…...

Cortex-M 内核的 OS 特性

目录 一、通用堆栈知识二、双堆栈用法三、PendSV 中断介绍和用法四、SVC 软中断介绍和用法五、特权级和非特权级使用方法 一、通用堆栈知识 在前面讲解 STM32 启动文件的时候就已经提到过,有关堆栈大小的设置是在启动文件中设置的: Heap 主要用于 Mal…...

第十六章 RabbitMQ延迟消息之延迟插件优化

目录 一、引言 二、优化方案 三、核心代码实现 3.1. 生产者代码 3.2. 消息处理器 3.3. 自定义多延迟消息封装类 3.4. 订单实体类 3.5. 消费者代码 四、运行效果 一、引言 上一章节我们提到,直接使用延迟插件,创建一个延迟指定时间的消息&…...

[单master节点k8s部署]32.ceph分布式存储(三)

基于ceph rbd生成pv 在集群中认证ceph 用下面代码生成ceph的secret .创建 ceph 的 secret,在 k8s 的控制节点操作: 回到 ceph 管理节点创建 pool 池: [rootmaster1-admin ~]# ceph osd pool create k8stest 56 pool k8stest created [rootm…...

git 相关问题解决一一记录

文章目录 gitssh.github.com: Permission denied (publickey)1. 检查 SSH 密钥生成新的 SSH 密钥添加 SSH 密钥到 GitHub 2. 配置 SSH 代理启动 SSH 代理添加私钥到 SSH 代理 3. 检查 SSH 配置文件4. 测试 SSH 连接5. 检查防火墙和网络设置6. 检查 GitHub 账户设置详细步骤 更新…...

UE4 材质学习笔记04(着色器性能优化)

一.着色器性能优化 1.衡量着色器的性能 衡量着色器性能的主要方法有三个 第一个:可以使用场景的视图模式的优化视图模式的着色器复杂度 下面的滑条代表了着色器指令的复杂度 如果场景大部分是绿色的,说明着色器耗能低,反之白色则是很糟糕…...

3、Redis Stack扩展功能

文章目录 一、了解Redis产品二、申请RedisCloud实例三、Redis Stack体验1、RedisStack有哪些扩展?2、Redis JSON1、Redis JSON是什么2、Redis JSON有什么用3、Redis JSON的优势 3、Search And Query1、传统Scan搜索2、Search And Query搜索 4、Bloom Filter1、布隆过…...

Flythings学习(二)控件相关

文章目录 1 前言2 通用属性2.1 控件ID值2.2 控件位置2.3 背景色2.4 背景图2.5 显示与隐藏2.6 控件状态2.7 蜂鸣器控制 3 文本类TextView4 按键类 Button4.1 系统按键4.2 处理按钮长按事件4.3 处理按键触摸事件 5 复选框CheckBox6 单选组 RadioGroup7 进度条,滑块7.1…...

关于multiprocessing使用freeze_support()方法

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、freeze_support()?二、使用方法总结 **注意下面** 如果有车载讨论需要的小伙伴,可以私信加我微信,拉你进群,…...

基于rk356x u-boot版本功能分析及编译相关(一)

🎏技术驱动源于热爱,祝各位学有所成。 文章目录 uboot的分支是next-dev历史版本v2017-09uboot支持DM框架uboot前级pre-loader支持及引导下级uboot分区支持uboot支持固件格式secure bootuboot编译脚本位置build.shuboot/make.shrkbin仓库uboot的分支是next-dev历史版本v2017-…...

Jenkins---01

什么是敏捷开发 敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开 发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、 可集成和可运行使用的特征。换言之&…...

第十五届蓝桥杯C++B组省赛

文章目录 1.握手问题解题思路1(组合数学)解题思路2(暴力枚举) 2.小球反弹做题思路 3.好数算法思路(暴力解法)---不会超时 4.R格式算法思路 5.宝石组合算法思路---唯一分解定理 6.数字接龙算法思路----DFS 7…...

线程 vs 虚拟线程:深入理解及区别

Java 提供了两种线程机制:普通线程(平台线程)和 虚拟线程。普通线程是 Java 中经典的并发处理方式,而虚拟线程是随着 Java 21 引入的新特性,旨在提升并发性能和开发体验。本文将详细探讨它们的区别,并帮助你…...

【WEB应用安全测试指南–蓝队安全测试2】--超详细-可直接进行实战!!!亲测-可进行安全及渗透测试

安全基础理论入门知识参考上一篇《WEB应用安全测试指南蓝队安全测试1》 WEB应用安全测试指南2 一、文件 I/O 类1.1、任意文件上传1.2、任意文件下载1.3、文件包含 二、接口安全类2.1、短信炸弹2.2、邮件炸弹2.3、短信内容可控2.4、邮件内容可控 三、逻辑流程类3.1、越权3.2、未…...

使用HTML、CSS和JavaScript创建滚动弹幕效果

使用HTML、CSS和JavaScript创建滚动弹幕效果 在现代网页设计中,滚动文本是一种常见的动态效果,可以吸引用户的注意力并增强交互体验。在这篇博客文章中,我们将详细介绍如何使用HTML、CSS和JavaScript实现滚动文本效果。 效果 步骤1&#xf…...

【C语言】--数组

😊个人主页: 起名字真南 😋个人专栏:【数据结构初阶】 【C语言】 【C】 目录 1 数组的概念2 一维数组的创建和初始化2.2 数组的初始化2.3 数组类型 3 一维数组的使用3.1 数组下标3.2 数组的输入 4 一维数组在内存中的存储5 sizeof计算数组中的元素6 二维…...

面向B2B市场的Spring Boot医疗病历系统开发

第1章绪论 计算机已经从科研院所,大中型企业,走进了平常百姓家,Internet遍及世界各地,在网上能够用计算机进行文字草拟、修改、打印清样、文件登陆、检索、综合统计、分类、数据库管理等,用科学的方法将无序的信息进行…...

闭着眼学机器学习——支持向量机分类

引言: 在正文开始之前,首先给大家介绍一个不错的人工智能学习教程:https://www.captainbed.cn/bbs。其中包含了机器学习、深度学习、强化学习等系列教程,感兴趣的读者可以自行查阅。 1. 算法介绍 支持向量机(Support Vector Mach…...

今日指数项目day8实战权限管理器(上)

3.权限管理器 3.1 权限列表展示功能 1)原型效果 2)接口说明 功能描述: 查询所有权限集合 服务路径: /api/permissions 服务方法:Get 请求参数:无响应数据格式: {"code": 1,"data":…...

《机器学习与数据挖掘综合实践》实训课程教学解决方案

一、引言 随着信息技术的飞速发展,人工智能已成为推动社会进步的重要力量。作为人工智能的核心技术之一,机器学习与数据挖掘在各行各业的应用日益广泛。本方案旨在通过系统的理论教学、丰富的实践案例和先进的实训平台,帮助学生掌握机器学习…...

linux中软连接和硬链接的区别

定义与概念 硬链接(Hard Link):硬链接是文件系统中的一个概念,它直接指向文件系统中的物理数据块。可以把硬链接看作是原始文件的一个别名,它们共享相同的inode(索引节点)编号。在Linux文件系统…...

#Swift 对比 Static 在Swift 和 OC中的用法

在 Objective-C 和 Swift 中,static 关键字都用于定义类型级别的成员,但它们的用法和行为在两个语言中有所不同。让我们来详细对比一下 Objective-C 和 Swift 中 static 的使用方式和特性。 1. Objective-C 中的 static 在 Objective-C 中,…...

yakit使用教程(三,端口探测和指纹扫描)

本文仅作为学习参考使用,本文作者对任何使用本文进行渗透攻击破坏不负任何责任。 前言: 前文链接:yakit下载安装教程。 1.端口扫描的作用。 对目标端口进行扫描可以知道目标服务器开启了什么服务,以便于针对其所存在的服务展开…...

一维数组的引用

#define SIZE 5 int main(void) { int i 0; int arr[SIZE] { 86,85,85,896,45 };//同理五个数据只是偶然&#xff0c;可能会更多 //输入 for (i 0;i < SIZE;i) { printf("请输入你的第%d个值&#xff1a;",i1); scanf_s(&…...

Vue3 watch 监视属性

作用&#xff1a;监视数据的变化&#xff08;和Vue2中的watch作用一致&#xff09;特点&#xff1a;Vue3中的watch只能监视以下四种数据&#xff1a; ref定义的数据。reactive定义的数据。函数返回一个值&#xff08;getter函数&#xff09;。一个包含上述内容的数组。 我们在V…...

大数据-158 Apache Kylin 安装配置详解 集群模式启动

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…...

PHP商会招商项目系统一站式服务助力企业腾飞

商会招商项目系统——一站式服务&#xff0c;助力企业腾飞 &#x1f680;&#x1f4bc; &#x1f680; 开篇&#xff1a;企业成长的加速器&#xff0c;商会招商项目系统来袭 在竞争激烈的市场环境中&#xff0c;企业如何快速找到适合自己的发展路径&#xff0c;实现腾飞&…...