诊断应用卡顿问题

定位、排查应用卡顿问题的原因有诸多难点。针对这类问题,ARMS提供持续剖析、调用链路诊断、接口监控等一套解决方案,帮助您快速准确定位应用中所有慢调用,进而解决应用卡顿问题。

问题分析

网站卡顿、页面加载过慢是互联网应用最常见的问题之一。排查、解决网站卡顿、页面加载过慢等问题过程复杂,耗时较长,原因如下:

  • 应用链路太长

    • 从前端页面到后台网关,从Web应用服务器到后台数据库,任何一个环节出现故障都有可能导致整体卡顿。

    • 采用微服务架构的应用,链路更加复杂,而且不同组件可能由不同的团队和人员维护,加剧了问题排查的难度。

  • 日志不全或质量欠佳

    应用日志是排查线上问题的主要方法,但出现问题的位置往往无法预期,而且“慢”通常是偶发现象,要真正找到“慢”的原因,需要在每个可能出现问题的地方打印日志,记录每一次调用,但是成本太高。

  • 监控不足

    业务发展过快、应用快速迭代导致应用频繁修改接口、增加依赖等情况,进而导致代码质量恶化。应用需要一个完善的监控体系来自动监控应用的每一个接口,自动记录出现问题的调用。

解决方案

为应用安装ARMS探针后,即可在不改动应用代码的情况下,使用ARMS应用监控的持续剖析、调用链路诊断、接口监控等功能,全方位监控应用中所有慢调用。

步骤一:安装ARMS探针

为应用安装ARMS探针后,才能对应用进行全方位监控。请根据实际需求选择一种方式来安装探针。具体操作,请参见应用监控接入概述

步骤二:查看慢SQL的统计信息

为应用安装ARMS探针后,ARMS会收集和展示选定时间内应用的总请求量、平均响应时间、错误数、实时实例数、Full GC次数、慢SQL次数、异常次数和慢调用次数,以及这些指标的周同比和日同比。请按以下步骤查看慢SQL的统计信息。

  1. 登录ARMS控制台,在左侧导航栏选择应用监控 > 应用列表

  2. 应用列表页面顶部选择目标地域,然后单击目标应用名称。

    说明

    语言列显示Java图标图标的应用为接入应用监控的应用,显示-图标的应用为接入可观测链路 OpenTelemetry 版的应用。

  3. 应用总览页面的概览分析页签下,查看慢SQL的总数、周同比和日环比数据。

    概览分析

步骤三:发现并锁定慢调用

ARMS接口调用页面展示了被监控的应用提供的所有接口以及这些接口的调用次数和耗时,慢接口会被标注出来,帮助您发现和锁定慢接口。

  1. 在左侧导航栏,单击接口调用

  2. 接口调用页面的左侧,单击调用次数最多的慢接口,在右侧查看慢接口的详细信息。接口调用

步骤四:查看并锁定问题代码

锁定慢接口后,需要找到问题代码来解决问题。快照是对一次调用的全链路调用的完整记录,包括每一次调用所经过的代码及耗时,可以精准定位问题代码。

  1. 接口调用页面右侧,单击调用链查询页签。

    调用链查询页签下显示该接口的所有调用链。

  2. 调用链查询页签下,单击某个调用链路的TraceId。

  3. 在弹出的页面,查看异常的调用链路信息,在详情列,单击放大镜图标,查看调用的方法栈,从而获得异常的上下文信息。

    说明

    如何查找目标调用链路,请参见调用链路查询

    在本示例中,可以看到在耗时为705毫秒的调用中,大部分的时间都消耗在了SELECT * FROM l_employee这次SQL调用中。

    调用链查询

    操作至此,您已发现了系统中的某个慢调用的原因,这将有效地帮助您进行下一步的代码优化工作。您还可以返回接口调用页面,查看列表中其他慢调用,逐一解决。

相关文档

为避免在出现问题后被动诊断错误原因,您还可以使用ARMS的告警功能针对一个接口或全部接口创建告警,即可在出现问题时向运维团队发送通知。如何创建告警,请参见应用监控告警规则