PTS 3.0:可观测加持的下一代性能测试服务

作者:肖长军(穹谷)

大家好,我是来自阿里云云原生应用平台的肖长军,花名穹谷,我此次分享的主题是《可观测加持的下一代性能测试服务》。提到性能测试大家并不陌生,性能测试已成为评估系统能力、识别系统弱点、进行系统调优,验证系统稳定性等的重要手段。

图片

我们一般进行性能测试的大概流程就是构造数据,配置场景,发起压测,出压测结果,但测试同学也清楚性能测试并不是这么简单,我们还面临着以下问题:

一、压测前的影响范围评估,如何准确地掌控压测的爆炸半径。

二、压测和业务系统的相关指标监控,分析当前系统性能。

三、如果压测不满足预期,还需要分析性能瓶颈点。

四、需要根据当前的压测结果给出可以支撑的最大容量或当前性能。这些问题是每个测试团队都需要面对的,在当前技术发展下,如何更好的解决这些问题?

图片

针对以上挑战,我们提出性能压测可观测化能力,分别针对以上问题提出压测链路可观测:

  • 首先,在实施压测前,先执行一次拨测,通过拨测发起一次请求来构建整个压测链路拓扑,通过链路拓扑全局来看整个压测的影响范围。
  • 其次,性能指标可观测,获取压测链路所涉及的监控指标,自动生成压测及各业务各实例水位大盘,边压边观测。
  • 再次,聚合压测请求各指标和链路事件,实现链路剖析和智能化分析,实现性能瓶颈可观测。
  • 最后,通过前面提到的压测指标和各服务实例资源水位,进行梯度压测评估验证系统服务容量。构建性能压测可观测,实现从压测到数据分析。

在此之上,我们构建了性能测试 PTS 3.0 可观测加持下的下一代性能压测服务。

图片

性能测试 PTS 3.0 平台整体架构分为七部分,从底向上来看,底层压测引擎支持自研的 PTS 引擎,同时全面兼容开源 JMeter 压测引擎,后续会支持 K6 引擎,使用户能将已配置的压测顺滑迁移到 PTS 平台。将压测指标数据写入 Prometheus 和 Logs,开放给用户用于查询,并提供 Grafana 大盘供用户调用,满足用户对数据的灵活处理需求。

在压测准备阶段, 性能测试 PTS 与应用实时监控服务 ARMS 产品打通,集成 ARMS 各项功能,包含获取应用列表、调用接口、数据库调用、容器、基础设施、Trace 等数据,通过这些数据打通,简化压测配置,构建压测链路拓扑。

在压测执行阶段, 压测引擎透传链路标,打通 ARMS 调用链,通过 Streaming 统一聚合处理。在压测过程中,提供各项实例指标的压测 Grafana 大盘,通过 ARMS 智能洞察和调用链分析能力实现性能瓶颈分析,在压测中可实现边压边调速。

压测结束后, 自动生成详细压测报告,提供性能基线对比、全景快照。

整体压测各个阶段,都可以通过云原生大模型提供的自然语言交互来支持,满足业务上云、大促活动、规格选型等场景。通过以上能力,性能测试 PTS 3.0 具备以下特点:

图片

应用实时监控服务 ARMS 加持下的压测全面可观测化,大语言模型加持下的压测智能化,全面拥抱开源引擎,实现压测脚本任务托管。以下分别重点来介绍这些特性:

压测可观测中的压测链路可视化

性能测试 PTS 与 ARMS OpenTelemetry 服务打通,接入 ARMS OT 探针后即可使用,无需额外配置。在发起压测之前,会通过拨测能力进行压测脚本测试和链路探测,能自动准确识别请求链路所经过的组件,根据拨测请求建立链路拓扑图,不会涉及正常请求所经过的链路,这样我们就可以很直观的感知压测所经过的链路,明确压测影响的范围。

图片

压测数据大盘,链路各项指标全监控

性能测试 PTS 集成 Grafana 大盘,在压测过程中会根据压测链路动态生成压测数据大盘,实现链路各项指标全监控。如覆盖以下监控大盘:

  • 业务大盘: 对核心业务指标进行监控,如场景请求量、业务转化率等。
  • 压测大盘: 对压测服务指标进行监控,如 TPS、RT、成功率、异常请求数、总请求数,90/95/99 RT 等。
  • 应用监控大盘: 覆盖请求链路所涉及的应用监控指标改了,以应用为维度包含各应用实例数、请求数、错误数、RT 等指标。
  • 容器监控大盘: 容器服务监控,覆盖 API Server、Node、Pod 等核心实例组件监控,覆盖 QPS、成功率、Pod 数,资源使用率等指标。

除此之外,还有接入层 SLB 大盘、ECS 实例大盘、数据库实例大盘等。通过以上大盘,监测压测链路各实例水位和状态,可以通过此大盘边观测边调速,达到最优压测的目的。

图片

性能瓶颈可观测,快速定位问题根因

性能测试遇到很多的问题是压测结果不及预期,这就需要逐步分析当前系统或整个链路的性能瓶颈点。性能测试 PTS 与应用实时监控服务 ARMS 中智能洞察能力相融合,自动化的筛选压测期间异常的事件,进入异常事件详情,可以插件此事件所涉及的接口、异常原因、完整的异常栈、异常发生次数、异常率、异常时间范围、调用链等信息,点击调用链分析,即可进入调用链详情,查看此次异常分析报告,如在以上场景中,监测到获取数据库连接超时异常事件, 经过调用链分析指出异常时刻数据库连接池最大使用率 100%(最大活跃连接数/最大可用连接数)并给出建议调大连接池配置建议。通过此功能,大大提升性能分析效率,实现性能持续调优的目的。

图片

系统容量可观测,自动化容量规划与验证

基于以上配置和指标数据,我们还计划推出自动化容量规划与验证。我们先看压测梯度的三个阶段:

一、是如果资源负载不高时,TPS 和资源使用率呈线性增长关系。

二、是持续加压当资源负载饱和时,随着并发量增长,TPS 趋势保持平稳,CPU 开始飙升。

三、是当资源负载满,并发量突破系统所能承载的最大容量点时,TPS 趋势及 CPU 都出现大幅波动,此时服务出现不可用的现象。借助此容量评估方法,在压测前可配置预期的并发量,结合上述自动识别出的链路组件,同时配置各实例预期的最大资源水位阈值,逐步加压达到资源阈值,可以计算出如果达到预期流量所需要的资源实例数,进行容量规划。再进一步加压,达到资源负载极限,计算在此资源实例数下支持的最大并发量,进行容量评估。

图片

支持生成式 AI,降低压测门槛

以上是通过与 ARMS 产品深度集成,实现压测全面可观测化,达到持续监控和反馈,做更深入的性能分析,优化性能问题,从而实现压测产出价值最大化。性能测试 PTS 3.0 还有与阿里云云原生大语言模型相结合,通过自然语言交互式方式实现智能化压测。

通过生成式 AI,分析性能测试指令,创建压测任务,完成脚本调试,执行压测任务。从全链路视角,查看动态图标,观测应用系统整体性能状态。针对性能瓶颈,实现问题定位,发现瓶颈根因。还可以利用大模型对压测报告进行深入分析和解读,给出压测总结等。

图片

接下来,我们进行一次完整演示视频:

托管 JMeter生态,发挥压测最大价值

在能力升级之外,开源开放是性能测试 PTS 一直以来的产品核心价值。目前,性能测试 PTS 支持托管 JMeter 压测引擎,平台已经具备的可观测、智能化等能力,发挥压测最大价值。

图片

JMeter 脚本直接在性能测试 PTS 控制台页面上传即可压测,上传脚本后,平台会解析脚本,自动下载补齐所依赖的 jar 包,减少用户配置成本,从而提升压测成功率。对 JMeter 压测配置也进一步优化,提供便捷的瀑布流式配置,从上而下沉浸式配置,基础配置和可选高阶配置分开,减少用户配置理解成本,降低压测场景配置难度。前面提供到与可观测集成的能力,也在 JMeter 压测中支持,压测结束后自动生成报告,复用平台压测大盘,提供性能分析结果。在复用 JMeter 压测引擎的同时,通过平台得到更加稳定、更大规模、更具有价值的压测体验。

图片

性能测试 PTS 持续保持开放,提供 OpenAPI,产品具备集成和被集成的能力,赋能云服务,推荐给用户适合自己的规格实例。如在函数计算产品上可通过性能测试 PTS 提供的函数性能探测获取单实例性能上限,降低并发度配置难度,给用户推荐合适的实例规格,降低函数计算使用成本。在微服务引擎 MSE 产品上,支持 Dubbo 等服务性能测试,发现服务性能问题,支持云原生网关性能测试,从而获取网关性能上限。

目前,性能测试 PTS 可从全球 22 个地域发起压测,支持百万级最大并发和千万级最大 TPS,满足实时发起全球大规模压测,服务超过全球数万家企业。

图片

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用rsync构建镜像网站

实验环境 某公司在深圳、北京两地各放置了一台网站服务器,分别应对南北大区内不断增长的客户访问需求,两台服务器的网站文档必须保持一致,如图12.3所示,同步链路已通过VPN专用线路实现。 需求描述 > 服务器 A(北京…

SpringBoot多线程与任务调度总结

一、前言 多线程与任务调度是java开发中必须掌握的技能,在springBoot的开发中,多线程和任务调度变得越来越简单。实现方式可以通过实现ApplicationRunner接口,重新run的方法实现多线程。任务调度则可以使用Scheduled注解 二、使用示例 Slf…

linux如何清理磁盘,使得数据难以恢复

sda 是硬盘,sda1 和 sda2 是硬盘的两个分区。centos-root 是一个逻辑卷,挂载在根目录 /。 /dev/sda 是硬盘,/dev/sda1 和 /dev/sda2 是硬盘的两个分区。 [rootnode2 ~]# dd if/dev/urandom of/dev/sda bs4M这个命令将从 /dev/urandom 读取随…

【软件工程大题】数据流图_DFD图_精简易上手

数据流图(DFD)是一种图形化技术,它描绘信息流和数据从输人移动到输出的过程中所经受的变换。 首先给出一个数据流图样例 基本的四种图形 直角矩形:代表源点或终点,一般来说,是人,如例图的仓库管理员和采购员圆形(也可以画成圆角矩形):是处理,一般来说,是动作,是动词名词的形式…

<JavaEE> TCP 的通信机制(二) -- 连接管理(三次握手和四次挥手)

目录 TCP的通信机制的核心特性 三、连接管理 1)什么是连接管理? 2)“三次握手”建立连接 1> 什么是“三次握手”? 2> “三次握手”的核心作用是什么? 3)“四次挥手”断开连接 1> 什么是“…

vue动态路由,三级及以上路由,地址跳转,但是页面不显示

vue动态路由的时候,一级,二级路由都正常展示,但是三级,四级,五级等就只看到地址跳转了,但是页面并没有跳转,原因是共用了一个<router-view></router-view> import Layout from /layout import Vue from vue import Router from vue-router import db from /utils/…

工具系列:TensorFlow决策森林_(8)组合决策森林和神经网络模型

文章目录 介绍安装 TensorFlow Decision Forests导入库数据集模型结构模型训练评估决策森林下一步是什么&#xff1f; 介绍 欢迎来到TensorFlow Decision Forests&#xff08;TF-DF&#xff09;的模型组合教程。本教程将向您展示如何使用通用的预处理层和Keras函数式API将多个…

linux 网络工具(一)

linux 网络工具 1. nmcli命令1.1 介绍1.2 networking 网络控制1.3 connection 连接管理1.4 device 设备管理1.5 nmcli 返回状态码 2. ifcfg命令家族2.1 ifconfig2.2 route2.3 netstat 3. 静态路由CentosUbuntu - netplanUbuntu - network-manager 1. nmcli命令 1.1 介绍 RHEL…

使用机器学习进行语法错误检测/纠正

francescofranco_39234 一、说明 一般的学习&#xff0c;特别是深度学习&#xff0c;促进了自然语言处理。各种模型使人们能够执行机器翻译、文本摘要和情感分析——仅举几个用例。今天&#xff0c;我们将研究另一个流行的用途&#xff1a;我们将使用Gramformer构建一个用于机器…

安卓全球定位系统RTK测量仪 手持GPS北斗定位仪可用于国土电力

RTK&#xff0c;英文全名叫做Real-time kinematic&#xff0c;也就是实时动态。这是一个简称&#xff0c;全称是RTK&#xff08;Real-time kinematic&#xff0c;实时动态&#xff09;载波相位差分技术。 RTK定位是一种高精度的全球卫星导航技术&#xff0c;是实时运用技术&…

springcloud之通过openfeign优化服务调用方式

写在前面 源码 。 在前面的文章中我们实际上已经完成了优惠券模块微服务化的改造&#xff0c;但是其中还是有比较多可以优化和增强的地方&#xff0c;本文就先来对服务间的通信方式进行优化&#xff0c;具体就是使用openfeign来替换调原来的webclient。下面我们就开始吧&#…

低代码平台在金融银行中的应用场景

随着数字化转型的推进&#xff0c;商业银行越来越重视技术在业务发展中的作用。在这个背景下&#xff0c;白码低代码平台作为一种新型的开发方式&#xff0c;正逐渐受到广大商业银行的关注和应用。白码低代码平台能够快速构建各类应用程序&#xff0c;提高开发效率&#xff0c;…

网络攻防中应该掌握的进阶工具udp2raw,通过raw socket给UDP包加上TCP或ICMP header,进而绕过UDP屏蔽或QoS

网络攻防中应该掌握的进阶工具udp2raw,通过raw socket给UDP包加上TCP或ICMP header,进而绕过UDP屏蔽或QoS。 udp2raw tunnel,通过raw socket给UDP包加上TCP或ICMP header,进而绕过UDP屏蔽或QoS,或在UDP不稳定的环境下提升稳定性。可以有效防止在使用kcptun或者finalspeed的…

TiDB 7.5 LTS 发版丨提升规模化场景下关键应用的稳定性和成本的灵活性

互联网时代&#xff0c;数据的迅猛增长给数据库带来了可扩展性的挑战&#xff0c;Gen AI 带来的数据暴增更加剧了这种挑战。传统的数据分片已经不能承载新时代数据暴增的需求&#xff0c;更简单且具有前瞻性的方法则是采用原生分布式数据库来解决扩展性问题。在这种规模化场景的…

MYSQL一一外键约束

概念&#xff1a;外键用来让两张表的数据之间建立联系&#xff0c;从而保证数据的一致性和完整性 建立外键&#xff1a; ①这是在建立表的时候建立外键的方法 ②这是在建立完表之后建立外键的方法&#xff1a; 删除外键&#xff1a; 现在有一张员工表&#xff08;emp&#xf…

Linux基本指令(二)

目录 &#x1f4d5;前言 &#x1f4d5;echo 输出重定向&#xff08;>&#xff09; 追加重定向(>>) 输入重定向&#xff08;<&#xff09; &#x1f4d5;more &#x1f4d5;less &#x1f4d5;head &#x1f4d5;tail 查看大文本的中间部分 &#x1f4d5…

Java 8 中的 Stream 轻松遍历树形结构!

可能平常会遇到一些需求&#xff0c;比如构建菜单&#xff0c;构建树形结构&#xff0c;数据库一般就使用父id来表示&#xff0c;为了降低数据库的查询压力&#xff0c;我们可以使用Java8中的Stream流一次性把数据查出来&#xff0c;然后通过流式处理&#xff0c;我们一起来看看…

深入ArkUI:深入实战组件text和text input

文章目录 Text组件介绍Text组件的属性方法Text:文本显示组件4.3TextInput组件实战案例:图片宽度控制页面本文总结要点回顾在今天的课程中,我们将深入学习ArkUI提供的基础组件,着重探讨text和text input两个组件。 Text组件介绍 Text组件是一个用于显示文本的组件,其主要作…

自动化运维平台Spug本地部署结合内网穿透实现远程访问

文章目录 前言1. Docker安装Spug2 . 本地访问测试3. Linux 安装cpolar4. 配置Spug公网访问地址5. 公网远程访问Spug管理界面6. 固定Spug公网地址 前言 Spug 面向中小型企业设计的轻量级无 Agent 的自动化运维平台&#xff0c;整合了主机管理、主机批量执行、主机在线终端、文件…

【HTML】使用canvas添加水印

效果 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>添加水印</title><style>…