诊断服务端报错问题

网页抛错是互联网应用最常见的问题之一,但其错因分析是一个难点。为应用安装ARMS探针后,就能在不改动应用代码的情况下,借助ARMS应用监控的异常自动捕捉、收集、统计和溯源等功能,准确定位应用中所有异常并进行线上诊断。

问题描述

网页抛错,尤其是5xx错误是互联网应用最常见的问题之一。5xx错误通常发生于服务端。服务端是业务逻辑最复杂,也是整条网络请求链路中最容易出错、出了错之后最难诊断原因的地方。运维工程师或研发工程师往往需要登录机器查看日志来定位问题。

示例:常见的Java应用错误日志常见的Java应用错误日志

对于逻辑不太复杂、上线时间不长的应用来说,登录机器查看日志的方式能够解决大部分网站抛错的问题。但在以下场景中,传统的问题诊断方式往往没有用武之地。

  • 在一个分布式应用集群中,需知道某一类错误的发生时间和频率。

  • 某系统已运行了很长时间,但是不想关心遗留的异常,只想知道今天和昨天相比、发布后和发布前相比多了哪些异常。

  • 查看一个异常对应的Web请求和相关参数。

  • 客服人员提供了一个用户下单失败的订单号,分析该用户下单失败的原因。

解决方案

为应用安装ARMS探针后,即可在不改动应用代码的情况下,利用ARMS应用监控的异常自动捕捉、收集、统计和溯源等能力,全面掌握应用的各种错误信息。

步骤一:安装ARMS探针

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

步骤二:查看关于应用异常的统计信息

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

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

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

    说明

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

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

    image.png

  4. 滑动页面至概览分析页签底部的统计分析区域的异常类型,查看各类型异常出现的次数。

    各类型异常出现的次数

  5. 在左侧导航栏,单击应用详情,然后在页面右侧单击异常分析页签,查看异常统计图、错误数、异常堆栈等。

    异常分析页签

步骤三:诊断异常出现的原因

掌握应用异常的统计信息还不足以诊断异常出现的原因。虽然日志中异常堆栈包含调用的代码片段,但并不包含这次调用的完整上下游信息和请求参数。ARMS探针采用了字节码增强技术,让您能够以很小的性能消耗捕获异常上下游的完整调用快照,进而找出导致异常出现的具体原因。

  1. 异常分析页签下,找到要诊断的异常类型,在其右侧操作列,单击调用链查询

    调用链查询页签下显示与该异常类型相关的调用链路信息。

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

    说明

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

    接口快照页签

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

    图 6. 异常的完整调用链路信息异常的完整调用链路信息

    操作至此,您已发现了应用异常的原因,这将有效地帮助您进行下一步的代码优化工作。您还可以返回调用链查询页签,查看列表中其他异常,逐一解决。