经典组合 | PTS + ARMS打造性能和应用诊断利器

简介: 服务端的性能测试,尤其是业务性能测试,是用来评估性能容量、诊断性能瓶颈和应用错误,或是验证高可用的能力,以此达到降低成本、提升用户体验的目的。但是,当需要有进一步的定位和刨析时,这类性能测试就会显得有点捉襟见肘。

服务端的性能测试,尤其是业务性能测试,是用来评估性能容量、诊断性能瓶颈和应用错误,或是验证高可用的能力,以此达到降低成本、提升用户体验的目的。但是,当需要有进一步的定位和刨析时,这类性能测试就会显得有点捉襟见肘。本文将介绍PTS + ARMS的经典组合,在性能容量评估、性能瓶颈诊断和应用错误诊断方面的实践方案。

性能测试PTS(Performance Testing Service)

脱胎于阿里全链路压测平台,是简单、直接的云化性能测试工具,可帮助用户轻松模拟海量访问的真实业务场景,支持所需资源随时发起,免去搭建和维护成本。

业务实时监控服务ARMS (Application Real-Time Monitoring Service)

是一款APM类的全链路(Tracing)监控产品。用户可基于ARMS的前端、应用和自定义监控,快速构建实时的业务监控能力。

image.png | left | 380x242

适用行业

PTS + ARMS 组成的经典压测监控方案,不仅已服务于淘宝、天猫等阿里巴巴集团内部用户,也正应用于其他多个行业,包括电子商务、互联网金融、游戏、新媒体、政府及大型央企等,支持新版本性能基线测试、大促场景测试和线上容量规划等场景。

image.png | left | 355x246

典型应用场景

  • 评估性能容量

以某知名在线教育平台为例,用户希望以最小的成本应对常态化的选课高峰,同时,在流量峰值的情况下,用户体验不能下降。

根据木桶原理,容量最小的系统也就是木桶最短的板决定了站点的能力。用户需要做的是识别短板,通过调整长短板之间的机器配比达到拉平系统水位的目的,那么即使是同样数量的机器也可以提供更大的业务吞吐量,甚至不用额外扩容。

通过PTS集成云监控和ARMS监控,不仅可以准确判断特定配置下的系统性能容量瓶颈,同时还能定位性能基线的配置短板,如系统性能、数据库瓶颈、代码问题等。性能容量评估分为以下3个步骤:

  1. 使用PTS快速构建高仿真业务压测;
  2. 通过PTS控制台一站式观察压测发起侧(客户侧)及服务侧(云监控)的端到端全监控,了解高压下的业务表现和各核心系统的性能水位情况;
  3. 再通过ARMS集成,快速找到应用瓶颈点,列出接口快照,结合系统性能诊断慢快照具体耗时原因,如系统性能,慢SQL,或其他代码问题。

image.png | left | 827x457

  • 诊断性能瓶颈

除了调整容量配比,PTS + ARMS还可以通过探测和识别系统瓶颈点,以提高站点性能的方式,进一步提升同样机器数量情况下的整体容量水位。

以在线教育平台上通过浏览器登录为例,最常见的一个操作流程是:登录 -> 根据用户的属性信息列出可选的课程列表 -> 用户通过查询条件进行准确的查询或者筛选 -> 选中最终的课程进行提交。

这个流程,作为一个事务,是有严格的先后顺序的。在PTS中就是一个串联链路。借助PTS对cookie的友好支持,整个链路都可以通过PTS配置出对应的压力测试流量,并借助ARMS进行监控,从而观察、分析性能瓶颈。

此外,用户还可以通过PTS发现接口调用性能瓶颈拐点,一键跳转到ARMS中,并基于具体线程刨息,发现具体代码栈内的性能瓶颈拐点,从而为优化代码性能,提供代码栈级别的证据。

性能瓶颈诊断分为以下3个步骤:

  1. 使用PTS快速构建压测并一站式观察相关应用的接口调用耗时,寻找性能瓶颈点;
  2. 使用ARMS观察对应应用的接口耗时,并找到对应的慢接口调用的线程进行刨析;
  3. 通过线程刨析找到对应接口的线程快照,分析性能瓶颈。

image.png | left | 827x411

  • 诊断应用错误

诊断应用错误是企业级互联网应用正式上线前的另一大场景。这类错误虽然一般不会直接影响调用耗时从而造成性能瓶颈,但是仍然会由于业务错误引发糟糕的用户体验。

应用在基线性能下除了耗时以外,通常还可能被返回各类调用错误,典型的有:

  1. 超时错误(timeout):当后端服务来不及响应时,可能会在客户端造成timeout 错误;
  2. 熔断错误:该类错误主要是被各类熔断组件触发(如Sentinal), 保护后端应用性能;
  3. 其他系统组件引起的错误:如性能超载引起的IOException等。

通过PTS + ARMS的经典组合,可以在压力增加时,有效发现以上的各类错误。

此外,基于PTS的施压侧监控和多维度监控特性,还可以通过ARMS集成关联到具体的错误异常详情,定位到具体错误抛出的详细代码,从而以指数级别提高压测场景下的接口错误诊断效率,错误接口诊断分为以下3个步骤:

  1. 使用PTS,观察压测增加时是否发生业务异常/错误;
  2. 使用ARMS,观察对应应用的总体错误调用,判断问题点。
  3. 打开错误的异常详情,通过异常的快照详情判断根系错误根因。

image.png | left | 827x417

可见,PTS通过集成ARMS的监控能力,可将关键的服务端性能指标整合到压测的整体监控中,以达到更快速、更便捷地识别问题的目的,降低用户的运维负担。

-> 欢迎关注“阿里巴巴中间件”,加入中间件开发者群,与技术同行。

101020104542_0949_2_Jpeg

相关实践学习
通过云拨测对指定服务器进行Ping/DNS监测
本实验将通过云拨测对指定服务器进行Ping/DNS监测,评估网站服务质量和用户体验。
相关文章
电子书阅读分享《Elasticsearch全观测技术解析与应用(构建日志、指标、APM统一观测平台)》
电子书阅读分享《Elasticsearch全观测技术解析与应用(构建日志、指标、APM统一观测平台)》
|
存储 消息中间件 监控
消息队列和应用工具产品体系-ARMS 服务的产品功能
消息队列和应用工具产品体系-ARMS 服务的产品功能
|
3月前
|
监控 DataWorks 前端开发
ARMS错误诊断
【8月更文挑战第22天】
62 4
|
6月前
|
存储 监控 前端开发
【专栏】阿里云ARMS前端监控的引入方法,以提升应用质量和稳定性
【4月更文挑战第29天】本文介绍了阿里云ARMS前端监控的引入方法,以提升应用质量和稳定性。该工具通过实时收集和分析用户行为、性能数据,提供错误监测和实时告警。步骤包括注册阿里云账号,创建前端监控项目,获取并嵌入监控代码到页面中,部署并运行,最后查看监控数据。案例和经验分享强调了合理设置监控指标、与其他工具结合以及定期分析数据的重要性。注意保护用户隐私,正确管理监控代码,并解决可能出现的数据不准确和大量错误告警问题。
197 1
|
6月前
|
数据采集 Arthas 数据可视化
解密 ARMS 持续剖析:如何用一个全新视角洞察应用的性能瓶颈?
解密 ARMS 持续剖析:如何用一个全新视角洞察应用的性能瓶颈?
941 12
解密 ARMS 持续剖析:如何用一个全新视角洞察应用的性能瓶颈?
|
6月前
|
关系型数据库 MySQL Serverless
Serverless 应用引擎常见问题之新发布的服务 arms 没了如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
|
11月前
|
监控 Kubernetes Cloud Native
多语言应用监控最优选,ARMS 应用监控 eBPF 版正式发布
多语言应用监控最优选,ARMS 应用监控 eBPF 版正式发布
131364 48
|
12月前
|
监控 Java 调度
阿里云 ARMS 应用监控重磅支持 Java 21
阿里云 ARMS 应用监控重磅支持 Java 21
48544 37
|
监控 安全 大数据
阿里服务的ASM、MSE和ARMS都有其各自的应用场景
阿里服务的ASM、MSE和ARMS都有其各自的应用场景
393 39
|
12月前
|
Arthas 监控 Java
慢调用链诊断利器-ARMS 代码热点
慢调用链诊断利器-ARMS 代码热点