ARMS TProf 线程剖析是代码级的诊断工具,能够自动捕获慢调用的堆栈快照,真实还原代码执行的第一现场。

使用场景

其典型使用场景有:

  • 当促销活动流量峰值出现慢调用时,ARMS TProf 可为您快速定位问题代码。

  • 当系统出现大量慢调用时,ARMS TProf 可为您自动保存第一现场。

  • 当业务太复杂,偶发性慢调用无法复现时,ARMS TProf 可为您还原代码真实执行轨迹。

使用方法

设置线程剖析参数

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

  3. 应用监控列表页面,单击目标应用的名称。

  4. 在左侧导航栏中单击应用设置,并在页面右侧单击自定义配置标签页。

  5. 线程剖析设置区域,可以打开或关闭线程剖析总控开关,并设置慢调用触发阈值。
    说明
    • 服务调用耗时超过该阈值(默认值为 1000 毫秒)时才会启动监听,并一直持续到该次调用结束或超过 15 秒。

    • 建议将此阈值设为调用耗时的第 99 百分位数。假设有 100 次调用,则按耗时从小到大排序,排在第 99 位的耗时就是第 99 百分位数。

通过接口快照查看线程剖析详情

  1. 在控制台左侧导航栏中选择应用监控 > 应用列表

  2. 应用监控列表页面,单击目标应用的名称。

  3. 在左侧导航栏中单击接口调用,并在页面右侧单击接口快照标签页。

  4. 接口快照标签页上单击一个 TraceId 链接。调用链路标签页在新窗口打开。

  5. 线程剖析栏中单击放大镜图标。线程剖析对话框打开。
    说明
    • 实际耗时是服务调用的实际执行时间,不受线程剖析影响。

    • 监听耗时是能够被 TProf 监听到的耗时。通常情况下,监听耗时 ≈ 实际耗时 - 慢调用触发阈值。

通过多维查询查看线程剖析详情

  1. 在控制台左侧导航栏中选择应用监控 > 多维查询

  2. 调用链路查询标签页的参数名下拉框中选择仅含线程剖析快照,并单击查询
  3. 在搜索结果中单击一个 TraceId 链接。调用链路标签页在新窗口打开。

  4. 线程剖析栏中单击放大镜图标。

常见问题

  • 实际耗时是什么?

    答:实际耗时是服务调用的真实执行时间,不受线程剖析影响。

  • 监听耗时是什么?

    答:监听耗时是指能够被线程剖析监听到的调用执行时间。为了尽量降低监听压力,线程剖析只会对每次调用超过慢调用监听触发阈值(默认为 2s)后的执行时间进行监听。例如一次实际耗时为 5s 的慢调用,前 2s 不会监听,只监听 3s ~ 5s 这一区间。如果一次调用耗时只有 1.8s,那它将不会被监听。

  • 为什么监听耗时小于实际耗时?甚至有些超过监听触发阈值的慢调用也没有被监听?

    答:
    • 由于线程剖析只监听一次调用超过触发阈值后的执行时间,因此,通常情况下,监听耗时 ≈ 实际耗时 - 慢调用监听触发阈值。
    • 但是,如果系统在同一时间内出现大量慢调用,由于监听线程有限,无法保证每个慢调用在满足触发阈值的第一时间就被监听。此时,就可能出现监听耗时远小于实际耗时的情况,甚至不会被监听。
    • 此外,为了保证超慢调用被监听,线程剖析针对 5s 以上的超慢调用设置了独立的监听线程,因此会出现:监听耗时 ≈ 实际耗时 - 5s。