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

问题描述

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

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

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

  • 在一个分布式应用集群中,需知道某一类错误的发生时间和频率。
  • 某系统已运行了很长时间,但是不想关心遗留的异常,只想知道今天和昨天相比、发布后和发布前相比多了哪些异常。
  • 查看一个异常对应的 Web 请求和相关参数。
  • 客服人员提供了一个用户下单失败的订单号,分析该用户下单失败的原因。

解决方案

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

步骤一:安装 ARMS 探针

为应用安装 ARMS 探针后,才能对应用进行全方位监控。请根据实际需求选择一种方式来安装探针。

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

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

  1. 在 ARMS 控制台左侧导航栏中,单击应用监控 > 应用列表

  2. 应用列表页面上,单击您的应用名称。

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

    图 2. 异常次数统计


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

    图 3. 各类型异常出现的次数


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

    图 4. 异常分析页签


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

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

  1. 异常分析页签上,单击某个异常类型的操作列中的接口快照

    接口快照页签上会展示出与该异常类型相关的调用链路信息。

  2. 接口快照页签上,单击某个错误调用的 TraceId。

    若您需要查找目标调用链路,请参见查询调用链

    图 5. 接口快照页签


  3. 在弹出的窗口中,查看异常的调用链路信息。单击方法栈列的放大镜图标,查看调用的详细请求参数和异常日志,从而获得异常的上下文信息。

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


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

后续操作

为避免在出现问题后被动诊断错误原因,您还可以使用 ARMS 的报警功能针对一个接口或全部接口创建报警,即可在出现问题的第一时间向运维团队发送通知。

创建报警操作步骤请参见快速创建 ARMS 报警

更多信息