智能日志管理平台

  • 智能日志管理平台 > 使用文档 > 全链路追踪 >使用指南 >调用链详情

    调用链详情

    最近更新时间: 2018-09-17 12:33:29

    调用链详情允许查看某个调用链的详细信息,包括链路的开始时间、持续时间、链路中的服务个数、span 个数、每个 span 各持续多长时间、每个 span 的具体信息等。

    典型应用场景是基于链路查询结果中的慢服务链路或出错服务链路查看链路细节,定位链路调用过程中每个环节的耗时和异常等信息。

    1) 通过调用链详情,可以直观定位到整条链路上耗时最长的一次调用过程。

    下图中,最耗时的一个节点可追踪定位到 service1 service1-opname ,接下来就可以对 service1 服务的 service1-opname 操作(或者调用过程)进行进一步分析

    2)点击 service1 service1-opname 可以看到其调用详情。

    下图中,通过 span.kind: server 信息可以指定,service1 服务,是作为 hello 服务的服务端被调用的。从调用链上,可以看到 service1 后续还调用了 service2,而最长耗时发生在 service1 调用 service2 之前,所以此示例中耗时根因在 service1 本地操作 service1-opname 中(相对于调用链起点,从 5.94ms 开始执行,持续了2.01s)。

    但如果最长耗时调用点发生在网络调用过程,如下图,最长耗时操作是 service1 callservice2-opname,该操作包含对 service2 的远程调用。我们需要区分是远程方法执行成为关键耗时还是网络延时成为关键耗时。前一种情况如上图所述,后一种情况为下图所示,service1 callservice2-opname 操作里有两条关键日志,Before call service2 事件发生的时刻是 1.7ms,After call service2 事件发生的时刻是2.01s,两个事件中间包含网络延时service2 的操作耗时。而 service2 的操作耗时可以由 service2 service2-opname 记录观察到(仅耗时0.06ms)。所以可以判断,下图所示情况的关键耗时是 service1service2 之间的网络延时。

    3)通过调用链可以定位代码结构中的耗时。

    如下图,整条调用链中总共有 38 条 span(调用点),其中 hello callservice2-opname 是关键耗时点,从图中可以观察到,该耗时点下包含 32 次 service2 service2-opname 远程调用,虽然每个 service2 service2-opname 执行事件都很短,但是 32 次远程调用累计的网络时延很大。说明代码结构中很可能存在循环远程调用,所以可以考虑优化方向:降低循环远程调用的次数。这种循环远程调用的代码结构场景,可以延伸到访问数据库的场景,若代码结构的循环体中访问数据库,也可能成为耗时关键。这类调用链均可以通过全链路监控服务进行定位分析。

    hello callservice2-opname日志字段里,也可以看到 包含 32 次 service2 service2-opname 远程调用,如下图:

    以上内容是否对您有帮助?
  • Qvm free helper
    Close