基于 PTS 压测轻松玩转问题诊断

简介:性能测试 PTS(Performance Testing Service)是具备强大的分布式压测能力的 SaaS 压测平台,可模拟海量用户的真实业务场景,全方位验证业务站点的性能、容量和稳定性。

作者:智云

为什么要做压测的问题定位?

性能测试 PTS(Performance Testing Service)是具备强大的分布式压测能力的 SaaS 压测平台,可模拟海量用户的真实业务场景,全方位验证业务站点的性能、容量和稳定性。

在不断的对被压服务端水位进行摸高的过程中,我们可以从压测视图或者压测报告中看到较为全面的压测指标,例如 QPS、RT、TPS 等,但是单纯从这些指标上,是不能很快的定位到服务端具体问题所在的,例如,我们从全场景错误信息中心可以看到错误码对应的接口的响应体,但是具体在下游的哪一环节出错,以及错误的堆栈是什么,这里单纯从报告中是看不到的,而接口下游具体是哪里出错,错误堆栈是什么,正是用户所关心的问题。

借助问题诊断,我们可以明确被压接口的上下游的调用情况,同时,从链路视图上,我们可以看到整条链路所经过的消息组件(Kafka、RocketMQ 等)、缓存(Redis、MongoDB 等)、数据库(MySQL、Oracle 等)、RPC 调用(Feign、Dubbo、HttpClient 等),例如,某个接口出现状态码异常或者其他的错误,那么,我们可以从调用链上看到到底是 Rpc 调用出现问题,还是数据库读写出现问题,并且能够从调用链上看到对应的报错堆栈,在这些信息的基础上,问题应该去哪里定位也就比较明确了。

问题诊断基本介绍和核心优势

基本介绍

谈到问题诊断,用户主要关心接入问题诊断是否需要对应用侧代码做一系列的改造,是否需要进行繁杂的配置等等。PTS 提供的问题诊断是基于 JavaAgent 的,无需用户侧做业务代码改造,对于基于 Tomcat 的部署方式,用户只需在启动脚本中添加一些必要的参数即可接入问题诊断;对于 Kubernetes 用户,用户只需在 Yaml 配置文件中添加一些必要的注解即可接入问题诊断。对于链路的采集规则,PTS 会提供默认的配置,用户也可根据自己的需要自行更改。

PTS 集成的问题诊断在压测过程中,针对每条请求,会在施压引擎端生成 TraceId,通过 TraceId 将该条请求所涉及到的上下游链路关联起来,用户可以看到从该条请求作为入口到本条请求结束所涉及到的完整调用链,同时,问题诊断会针对该调用链生成相应的应用拓扑视图,可以让用户清晰地看到应用之间的调用关系。

针对异常的接口,我们可以在调用链中看出对应的错误原因,同时,用户可以根据具体的报错堆栈对服务端的问题进行排查和优化。压测过程中用户可以实时的查看指定请求的调用链,同时,压测结束之后,也可以从压测报告中对问题进行回溯。

核心优势

1、零代码侵入:针对 Java 类型的服务,用户侧无需进行业务侧代码改造即可完成问题诊断的探针接入。

2、集成度高:压测、监控、问题诊断,集成在同一控制台,用户理解和操作成本相对较低。

3、监控指标全:在压测过程中,除了较为基础的监控指标外,同时针对每个服务,提供接口、机器、应用级别的监控。

 4、门槛低:仅需要简单配置参数即可完成问题诊断探针接入,同时该探针还具备多协议 Mock、全链路压测等功能。

快速玩转问题诊断

接入问题诊断的基本流程图如下所示:

接入探针,并查看是否接入成功

首先,我们将被压场景所涉及到的应用梳理出来,将涉及到的所有应用按照【问题诊断】->【探针接入[1]】文档中的步骤进行问题诊断探针接入。我们可以在 PTS 控制台的应用配置或者应用监控、接口监控、机器监控中任选一个来查看应用探针是否接入成功。我们本次演示的压测场景涉及到五个应用,分别是 petstore-web、petstore-user、petstore-order、petstore-catalog、petstore-cart,这以应用监控举例来查看应用是否成功接入。依次点击 PTS 控制台的【问题诊断】->【应用监控[2]】->选择我们配置的 Region 以及 Namespace,如果看到压测场景涉及到的所有应用均在该页面,则代表应用接入成功。

在压测场景中打开问题诊断开关

然后,我们在 PTS 控制台的【压测中心】->【创建场景[3]】中创建压测场景,这里可以选择 PTS 场景或者 JMeter 场景等,这里以 PTS 场景为例,因为本次演示主要是验证问题诊断的能力,所以需要在场景配置中的【高级设置】中打开问题诊断开关。具体的监控采集规则,PTS 会为用户推送默认采集开关打开的配置,同时,将采样率设置为千分之一,用户也可根据自己的需要进行自定义。

开始压测,查看应用监控

完成了以上步骤,我们的压测场景即具备了问题诊断的能力。当我们点击开始压测之后,可以到应用监控、接口监控、机器监控中选择我们关心的服务查看对应的监控情况,这里以应用监控[2]为例,其他类型的监控操作步骤类似,我们选择 petstore-user 这个服务来查看应用监控,如下图所示:

压测结束后,查看全场景错误信息

压测结束后,我们需要从压测报告中针对被压服务端的问题进行排查,打开对应场景的压测报告,具体步骤:PTS 控制台->【压测中心】->【报告列表[4]】,选择对应的压测报告,可以从概览页中看到全场景的信息,具体如下图所示:

选择探针采样,查看具体调用链情况

点击【查看采样日志】,采样类型选择”探针采样“即可过滤出问题诊断探针所采集到的调用链,具体如下图所示:

查看调用链具体错误堆栈信息,定位服务端问题所在

筛选出来探针端采集的调用链之后,即可对存在问题的接口进行调用链分析,例如,商品列表的接口返回的状态码为 500,点击查看详情看下具体原因,如下图所示:

从调用栈中可以看到具体的报错原因,从而对服务端代码进行优化和修复。同时,可以通过应用拓扑视图和数据库视图查看服务之间的调用情况以及数据库使用情况,这里以应用拓扑视图举例,如下图所示:

压测报告常见错误码总结

问题诊断错误码总结

问题诊断调用链路中的常见错误码进行总结,具体如下:

  • java.lang.NullPointerException:服务端空指针,具体可根据调用链中的错误堆栈对服务端的代码进行排查。
  • com.microsoft.sqlserver.jdbc.SQLServerException:服务端 SQL 报错,可根据调用链采集的堆栈信息对服务端 SQL 语法等进行检查。

压测报告错误码总结

这里针对压测报告中常见的错误进行列举,我们可以从全场景错误信息中看到相关的错误信息,具体如下:

  • class java.net.SocketTimeoutException:null 表示请求在等待响应或者读取中途(idle)超时。请检查服务端健康状况或者 PTS 的压测 API 超时时间的设置是否合理,另外还有可能是服务端处理能力出现瓶颈。
  • class java.net.ConnectException:null 表示请求在与远端(被压测端)建立 TCP 连接时就出现失败或者被远端拒绝。请检查服务端健康状况,或者是网络连接层是否有瓶颈。
  • class java.util.concurrent.TimeoutException:null 表示请求在与远端(被压测端)建立 TCP 连接时就出现失败或者被远端拒绝。请检查服务端健康状况,或者是网络连接层是否有瓶颈。
  • class org.apache.http.ConnectionClosedException:Connection closed 表示连接异常关闭,服务端主动关闭了连接。
  • class java.io.IOException:Connection reset by peer 表示连接被重置。若使用了 SLB,请查看 SLB 的配置是否有问题。
  • class org.apache.http.ConnectionClosedException:Connection closed unexpectedly 表示数据尚未接收完毕,连接就已关闭。可能服务端未及时响应或者提前终止调试或压测。
  • class java.lang.RuntimeException:java.net.UnknownHostException 表示域名信息无法解析。请检查域名是否已经正常注册并可以解析、未注册的域名是否已进行域名绑定。
  • class org.apache.hc.core5.http.ProtocolException:Header 'key: value' is illegal for HTTP/2 messages 表示在服务端优先使用 HTTP2 协议的情况下,场景配置了 HTTP2 协议不支持的 Header,请移除相应Header后重试。HTTP2 不支持的常见 Header 有:Connection、Keep-Alive、Proxy-Connection、Transfer-Encoding、Host、Upgrade。

相关链接

[1] 探针接入

阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台

[2] 应用监控

阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台

[3] 创建场景

阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台

[4] 报告列表

阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台原文链接本文为阿里云原创内容,未经允许不得转载。 

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

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

相关文章

阿里云开源业内首个应用多活项目 AppActive,与社区共建云原生容灾标准

简介:继高可用架构团队的 Sentinel、Chaosblade 开源后,第三个重磅高可用产品:应用多活 AppActive 正式开源,形成高可用的三架马车,帮助企业构建稳定可靠的企业级生产系统,提高企业面对容灾、容错、容量等问…

清晰还原31年前现场,火山引擎超清修复Beyond经典演唱会

7月3日晚,抖音携手环球音乐旗下厂牌宝丽金,直播经过火山引擎超清修复的Beyond Live1991生命接触演唱会及纪念音乐会精选内容,吸引了超1.4亿人次观看。 Beyond是一支成立于1983年的摇滚乐队,随着粤语音乐的兴起,Beyond…

如何定位并修复 HttpCore5 中的 HTTP2 流量控制问题

简介:开篇吹一波阿里云性能测试服务 PTS,PTS 在 2021 年 5 月份已经上线了对 HTTP2 协议的支持(底层依赖 httpclient5),在压测时会通过与服务端协商的结果来决定使用 HTTP1.1 或者 HTTP2 协议。 作者:风起…

全链路灰度之 RocketMQ 灰度

简介:本文将以上次介绍过的《如何用 20 分钟就能获得同款企业级全链路灰度能力?》中的场景为基础,来进一步介绍消息场景的全链路灰度。 作者:亦盏 之前的系列文章中,我们已经通过全链路金丝雀发布这个功能来介绍了 M…

普洛斯数据中心发布DC Brain系统,科技赋能智慧化运营管理

7月5日,普洛斯数据中心发布了DC Brain智慧化运营管理系统。该系统由普洛斯历时两年自主研发,契合现代化数据中心平台的发展趋势。目前已应用于普洛斯旗下数据中心,并有对外输出的成功案例,面向行业,赋能中小规模运营商…

mi6 android版本,小米6:我依旧是王,MIUI10.4.2稳定版与AndroidP同时到来

原标题:小米6:我依旧是王,MIUI10.4.2稳定版与AndroidP同时到来小米6作为小米数字系列最受欢迎的机型之一,从上市到下架热度一直未减,它也是众多米粉心目中小米数字系列最成功的机型没有之一。但是,再怎么讲…

如何利用 AHAS 保障 Web 服务稳如磐石?

简介:应用高可用服务 AHAS (Application High Availability Service) 是经阿里巴巴内部多年高可用体系沉淀下来的云产品,基于阿里开源流控降级组件 Sentinel,以流量与容错为切入点,从流量控制、不稳定调用隔离、熔断降级、热点流量…

KubeDL HostNetwork:加速分布式训练通信效率

简介:ubeDL 为分布式训练作业带来了 HostNetwork 网络模式,支持计算节点之间通过宿主机网络相互通信以提升网络性能,同时适应 RDMA/SCC 等新型高性能数据中心架构的网络环境,此外,KubeDL 针对 HostNetwork 模式带来的 …

阿里云容器服务差异化 SLO 混部技术实践

简介:阿里巴巴在“差异化 SLO 混合部署”上已经有了多年的实践经验,目前已达到业界领先水平。所谓“差异化 SLO”,就是将不同类型的工作负载混合运行在同一节点,充分利用工作负载对资源 SLO 需求特征的不同,提升资源整…

鸿蒙系统被烧毁,华为鸿蒙操作系统再次被质疑 国产是原罪

国产是原罪,国际驰名双标现象严重,为何对待国产的东西要格外刻薄?华为手机版鸿蒙系统正式发布,但却引来一片嘲讽,这些人简直是刷新三观。如果一个产品是相同的价格,国产的用料更足但是还不够成熟&#xff1…

云原生落地大爆发,企业和开发者如何把握先机?

简介:回顾 2021 年,云原生有哪些重大技术突破?云原生时代下开发模式、技术标准等不断变化,企业应该如何落地云原生?开发者应掌握哪些能力?本文将为你一一解说。 作者:伍杏玲 随着云计算产业走…

Gartner发布中国人工智能软件市场指南,激烈竞争下走向差异化

作者 | Gartner高级研究总监 方琦 供稿 | Gartner 人工智能(AI)软件是中国企业投资和关注的重点。中国的AI软件市场在持续快速增长,竞争非常激烈。AI软件企业使用一种或多种AI技术(见图1),帮助企业解读事件…

华为Mate是鸿蒙系统,华为mate30概念新机:4500mAh+5G网络+“鸿蒙”系统 这才是华为...

对于现在的华为手机来说,很多消费者的态度不一样,有的觉得华为手机性价比不高,有的则觉得华为手机质量很好,配置也非常的高。而我觉得,华为手机最值得敬佩,敬佩的是华为不屈的精神,敬佩的是远见…

平安保险基于 SPI 机制的 RocketMQ 定制化应用

简介:本文讲讲述平安保险为何选择 RocketMQ,以及在确定使用消息中间件后,又是如何去选择哪款消息中间件的。 作者:孙园园|平安人寿资深开发 为什么选用 RocketMQ 首先跟大家聊聊我们为什么会选用 RocketMQ&#xff…

Redis 内存优化神技,小内存保存大数据

作者 | 码哥呀来源 | 码哥字节这次跟大家分享一些优化神技,当你面试或者工作中你遇到如下问题,那就使出今天学到的绝招,一招定乾坤!❝如何用更少的内存保存更多的数据?我们应该从 Redis 是如何保存数据的原理展开&…

SchedulerX 如何帮助用户解决分布式任务调度难题?

简介:本文分别对任务调度平台的资源定义、可视化管控能力、分布式批处理能力进行了简述,并基于 SchedulerX 的能力结合实际业务场景提供了一些基础参考案例。希望通过上述内容能让大家方便地熟悉任务调度平台接入使用概况,对于现有用户也可结…

如何做“健康码”的性能压测

简介:随着无线设备的普及和 5G 的大力建设,越来越多的线上系统、小程序成为了人们生活中必不可少的工具。对于这些工具,都会面对一个问题:系统能承受多少用户同时访问,面对突发的流量洪峰,能否保证系统无故…

对话 MySQL 之父:一个优秀程序员可抵5个普通程序员

【CSDN 编者按】MySQL之父Monty有着四十多年的编程经验,从儿时的兴趣到长大后的深耕,他在编程领域不断钻研,最终成为编程大师。《新程序员004》带你走进Monty的程序人生,谈谈他在编程方面的最新感悟以及对未来的预测。作者 | 郭露…

服务网格 ASM 年终总结:最终用户如何使用服务网格?

简介:本文不打算回顾 Istio 或是阿里云服务网格 ASM 的变化或趋势,我们来聊一聊阿里云 ASM 服务网格,它的最终用户是如何使用服务网格的。 作者:叶剑宏 背景 阿里云服务网格 ASM 于 2020 年 2 月公测,近 2 年的时间…

使用 nginx 轻松管理 kubernetes 资源文件

作者 | 江小南来源 | 江小南和他的小伙伴们引言nginx在传统的使用中,一般是作为反向代理或者负载均衡。但是它还有一个很优秀的能力常被人们所忽略。在kubernetes部署应用的过程中,会有大量的yaml等资源需要维护。集群内部维护起来不太方便,特…