PTS 3.0:开启智能化的压测瓶颈分析

2024-02-28 15:44

本文主要是介绍PTS 3.0:开启智能化的压测瓶颈分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

作者:拂衣

PTS 简介

性能测试 PTS(Performance Testing Service)是阿里云上一款简单易用,具备强大的分布式压测能力的 SaaS 压测平台。PTS 可以模拟复杂的业务场景,并快速精准地调度不同规模的流量,同时提供压测过程中多维度的监控指标和日志记录。用户无需准备资源,即可按需发起压测任务,监控压测指标,获取压测报告,进而能够高效率、全方位地验证业务站点的性能、容量和稳定性。

阿里云压测平台演进之路

阿里云压测平台 PTS,由阿里云可观测团队倾心打造,应双十一稳定性和容量规划的需求背景而诞生,随高可用、中间件上云而对外输出产品能力。整体演进分以下 5 个阶段:

图片

2010 年-阿里巴巴容量规划平台

在此之前,阿里巴巴大促活动的容量规划主要通过人工估算的方式来完成的。各个系统的负责同学聚在一起开个会,将信息汇总到一起,按专家经验就把容量规划的机器预算给定下来了。而且,各个系统通常都留了比较大的机器冗余,即使估算的不准也不会造成大的业务影响。

此时,容量计算的公式被第一次提了出来,通过目标容量/单机容量上限,得到各应用需要的机器资源数,再加上一定比例的冗余量,就是大促时需要的总资源数。

在阿里容量规划平台的 1.0 版本当中,通过对各业务系统线下环境单机压测,来获取各服务的单机容量上限,完成了从人工容量规划到系统化容量规划的过度。

2013 年-阿里巴巴全链路压测-流量平台

随着双十一业务规模快速拉升,分布式系统架构的技术组件越来越多,应用的上下游依赖关系也越来越复杂。双十一当天 0 点到来的时候,从 CDN 到接入层、前端应用、后端服务、缓存、存储、中间件整个链路上都面临着巨大流量,这个时候应用的服务状态除了受自身影响,还会受到依赖环境影响,并且影响面会继续传递到上游,哪怕一个环节出现一点误差,误差在上下游经过几层累积后会造成什么影响谁都无法确定。由于各层依赖的不确定性,无法再基于单业务容量上限规划全局容量。

所以我们建立了全链路压测机制,通过全面仿真双十一业务流量,我们的系统能够提前经历几次“双十一”,让容量的不确定性问题提前暴露并解决。

流量平台是全链路压测的 CPU,能够模拟出双十一上亿用户的仿真流量,制造每秒数十万次用户行为的超大规模流量。主要由两大部件构成:1)全链路压测操控中心,进行压测的配置和操控、数据的监控以及对压测引擎集群的管控;2)压测引擎,由控制台统一管控,部署在外网 cdn 集群,进行登陆、session 同步,发送各种协议的压测请求、状态统计。

2013 年之后,全链路压测成为双十一、双十二等大促备战最重要的稳定性验证工具,随着业务的发展不断进化,持续发挥着不可替代的作用。

2018 年-阿里云 PTS 1.0:阿里云压测产品发布

在云计算的浪潮下,越来越多的用户开始基于阿里云上的基础产品设计自己的架构。在 2018 年,我们正式发布了阿里云压测产品:PTS,将阿里巴巴集团压测平台的技术架构迁移至阿里云,对外部用户提供 SaaS 化的压测产品。PTS 1.0 核心能力包括:

  • 无限接近真实的流量:业务场景中无论是高并发要求还是发起端的分散度,覆盖三四线城市主要运营商的节点广度都能做到真正模拟用户行为,客户端到服务端间复杂的网络瓶颈也能暴露无遗,压测结果更加全面和真实可信。
  • 操作简单易上手:不需要专门的性能测试团队或者测试背景的积累,完全面向开发的交互设计,开发自测试,投入产出比高。
  • 多维度施压:支持并发和 RPS 双维度。
  • 压力动态调整:支持压测能力动态修改。

2020 年-阿里云 PTS 2.0:施压能力、产品体验再升级

随着 PTS 1.0 用户规模的不断扩大,越来越多的用户在不同的业务场景对 PTS 提出了支持超高并发的压测需求,甚至超过了集团双十一的并发量级,典型场景如:春晚红包压测、保险开门红压测、考试报名压测等。PTS 2.0 通过优化资源调度和施压引擎性能,提供了百万并发、千万 QPS 的压测能力,连续支撑了多次春晚红包活动等顶级流量压测。

同时,PTS 2.0 升级了流量录制和多协议场景化功能,提升了产品体验:

  • 流量录制功能:允许录制实际用户操作,以便创建真实的用户行为模拟。
  • 多协议支持:对流媒体、MQTT、RocketMQ、Kafka、JDBC、Redis、Dubbo  等协议支持白屏化压测配置,扩宽测试场景。

2024 年-阿里云 PTS 3.0:可观测、智能化、开源加持的下一代压测平台

在 PTS 1.0 和 2.0 的持续演进中,PTS 在产品体验、施压能力都得到了大幅提升。要做一轮完整的容量规划,用户还需要解决以下问题:

  • 评估压测的影响范围,确定压测流量会经过哪些服务端应用,如何准确地掌控压测的爆炸半径。
  • 洞察压测和业务系统的全局监控指标,分析当前系统容量水位。
  • 如果压测结果不满足预期,需要出分析整个系统的性能瓶颈点。

这些问题是每个测试团队都需要面对的,在云原生和可观测技术的发展下,如何更好的解决这些问题?

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

首先,在实施压测前,先执行一次拨测,通过拨测发起一次请求来构建整个压测链路拓扑,通过链路拓扑全局来看整个压测的影响范围。

其次,性能指标可观测,获取压测链路所涉及的监控指标,自动生成压测及各业务各实例水位大盘,边压边观测。

再次,聚合压测请求各指标和调用链,通过 调用链分析和智能化分析,实现性能瓶颈可观测。

最后,通过前面提到的压测指标和各服务实例资源水位,进行梯度压测评估验证系统服务容量。构建性能压测可观测,实现从压测到数据分析。在此之上,我们构建了可观测加持下的下一代阿里云压测平台 PTS 3.0 ,通过打通阿里云全栈可观测生态,并集成云原生大模型和多模型智能归因算法,给用户提供更专业、结论更清晰、更有洞察力的压测报告,辅助用户在 PTS 实现压测瓶颈定位和根因分析。

同时 PTS 3.0 全面兼容开源 JMeter 压测工具,只需 JMeter 脚本上传到 PTS,即可自动补全依赖插件,一键发起压测。

PTS 3.0 核心功能

自动感知压测应用拓扑

PTS 与阿里云可观测链路 OpenTelemetry 打通,在发起压测之前,会通过拨测能力进行压测脚本测试和链路探测,能自动准确识别请求链路所经过的组件,根据拨测请求建立链路拓扑图,不会涉及正常请求所经过的链路,这样我们就可以很直观的感知压测所经过的链路,明确压测涉及的应用范围和架构拓扑。

图片

应用瓶颈分析

压测性能瓶颈往往出现在服务端应用层,最通过压测报告-全局监控-应用监控,可以观测到压测时段各服务端应用的副本数,以及 CPU、内存、磁盘等资源水位。配合错误请求数、数据库错慢调用次数、FullGC 次数等指标,可以判断出哪些应用负载较高,需要优化性能或扩容。

图片

对 JVM 内存泄漏等场景,可以通过 JVM 监控判断出问题现象,并配合 Profiling 分析根因。

图片

错慢请求根因分析

定界瓶颈点在应用层,需要进一步分析根因时,PTS 可以打通可观测链路 OpenTelemetry,获取到本次压测的错慢调用链,包含从施压端到数据库层的完整链路。通过下钻分析,可以定位到请求在调用链的哪里出现了错慢现象,并可以通过堆栈分析,判断出错慢的原因。

图片

图片

云资源瓶颈分析

在云原生的架构体系中,系统接入层、数据库、中间件、容器等基础资源都天然在云上,通过打通阿里云可观测监控 Prometheus,可以获取到负载均衡 SLB、RDS 数据库、ECS、容器等基础云资源的监控指标和大盘,辅助用户分析云资源是否存在瓶颈。

图片

图片

图片

智能洞察

性能测试 PTS 3.0 通过异常区间检测算法,自动发现应用层监控指标的异动,并通过多模型的智能归因算法,推理出异常现象的根因。

图片

图片

总结

PTS 3.0 以瓶颈分析为核心场景,构建出可观测、智能化、开源加持的下一代压测平台。目前 PTS 3.0 已全面上线,新版控制台地址:https://ptsnext.console.aliyun.com/

PTS 2.0 用户可以通过概览页右上角的“体验 PTS 3.0”按钮,一键跳转新版,新版 PTS 和 JMeter 的场景与报告和 PTS 2.0 完全兼容。

图片

为了更好的满足中小企业上云验证、容量规划等性能测试需求,目前性能测试 PTS  推出 59.9 元基础版特惠资源包。

3 万 VUM 额度,最高 5 万虚拟用户规模并发量,让性能测试更具性价比。

图片

点击此处,立即查看详情!

这篇关于PTS 3.0:开启智能化的压测瓶颈分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/755926

相关文章

Go使用pprof进行CPU,内存和阻塞情况分析

《Go使用pprof进行CPU,内存和阻塞情况分析》Go语言提供了强大的pprof工具,用于分析CPU、内存、Goroutine阻塞等性能问题,帮助开发者优化程序,提高运行效率,下面我们就来深入了解下... 目录1. pprof 介绍2. 快速上手:启用 pprof3. CPU Profiling:分析 C

MySQL表锁、页面锁和行锁的作用及其优缺点对比分析

《MySQL表锁、页面锁和行锁的作用及其优缺点对比分析》MySQL中的表锁、页面锁和行锁各有特点,适用于不同的场景,表锁锁定整个表,适用于批量操作和MyISAM存储引擎,页面锁锁定数据页,适用于旧版本... 目录1. 表锁(Table Lock)2. 页面锁(Page Lock)3. 行锁(Row Lock

Springboot中分析SQL性能的两种方式详解

《Springboot中分析SQL性能的两种方式详解》文章介绍了SQL性能分析的两种方式:MyBatis-Plus性能分析插件和p6spy框架,MyBatis-Plus插件配置简单,适用于开发和测试环... 目录SQL性能分析的两种方式:功能介绍实现方式:实现步骤:SQL性能分析的两种方式:功能介绍记录

最长公共子序列问题的深度分析与Java实现方式

《最长公共子序列问题的深度分析与Java实现方式》本文详细介绍了最长公共子序列(LCS)问题,包括其概念、暴力解法、动态规划解法,并提供了Java代码实现,暴力解法虽然简单,但在大数据处理中效率较低,... 目录最长公共子序列问题概述问题理解与示例分析暴力解法思路与示例代码动态规划解法DP 表的构建与意义动

C#使用DeepSeek API实现自然语言处理,文本分类和情感分析

《C#使用DeepSeekAPI实现自然语言处理,文本分类和情感分析》在C#中使用DeepSeekAPI可以实现多种功能,例如自然语言处理、文本分类、情感分析等,本文主要为大家介绍了具体实现步骤,... 目录准备工作文本生成文本分类问答系统代码生成翻译功能文本摘要文本校对图像描述生成总结在C#中使用Deep

开启mysql的binlog日志步骤详解

《开启mysql的binlog日志步骤详解》:本文主要介绍MySQL5.7版本中二进制日志(bin_log)的配置和使用,文中通过图文及代码介绍的非常详细,需要的朋友可以参考下... 目录1.查看是否开启bin_log2.数据库会把日志放进logs目录中3.查看log日志总结 mysql版本5.71.查看

基于Go语言实现一个压测工具

《基于Go语言实现一个压测工具》这篇文章主要为大家详细介绍了基于Go语言实现一个简单的压测工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录整体架构通用数据处理模块Http请求响应数据处理Curl参数解析处理客户端模块Http客户端处理Grpc客户端处理Websocket客户端

Redis主从/哨兵机制原理分析

《Redis主从/哨兵机制原理分析》本文介绍了Redis的主从复制和哨兵机制,主从复制实现了数据的热备份和负载均衡,而哨兵机制可以监控Redis集群,实现自动故障转移,哨兵机制通过监控、下线、选举和故... 目录一、主从复制1.1 什么是主从复制1.2 主从复制的作用1.3 主从复制原理1.3.1 全量复制

Redis主从复制的原理分析

《Redis主从复制的原理分析》Redis主从复制通过将数据镜像到多个从节点,实现高可用性和扩展性,主从复制包括初次全量同步和增量同步两个阶段,为优化复制性能,可以采用AOF持久化、调整复制超时时间、... 目录Redis主从复制的原理主从复制概述配置主从复制数据同步过程复制一致性与延迟故障转移机制监控与维

idea如何开启菜单栏

《idea如何开启菜单栏》文章介绍了如何通过修改IntelliJIDEA的样式文件`ui.lnf.xml`来重新显示被关闭的菜单栏,并分享了解决问题的步骤... 目录ijsdea开启菜单栏第一步第二步总结idea开启菜单栏手贱关闭了idea的js菜单栏,花费了半个小时终于解决,记录并分享一下第一步找