本文介绍ARMS支持的多种调用链采样策略,帮助您根据自身场景选择合适的调用链采样策略,从而以较低成本获取想要的调用链数据。

调用链采样适用于访问量比较高的大流量应用,能够帮助您以较低的成本和性能开销记录最有价值的链路数据。调用链采样的基本原则是优先记录您最关心、最有可能访问的调用链。ARMS提供的调用链采样策略如下:

说明 您可以组合使用以上调用链采样策略,以充分满足个性化的采样需求。

基于链路特征采样

基于链路特征采样是指根据调用链本身的属性进行采样,例如耗时、状态等。ARMS支持按照固定比例采样和线程剖析慢调用采样。

固定比例采样

固定比例采样就是根据TraceId顺序号记录一定比例的调用链数据。例如,固定比例为10%,则每10条调用链数据记录1条。固定比例采样不会导致调用链数据本身不完整,要么保留整条链路数据,要么丢弃整条链路数据。

基于固定比例采样适用于以下场景:

  • 压测或大促峰值期间流量过大,为了避免调用链全量日志上报影响客户端性能,建议调低固定采样率比例至1%~10%。
  • 日常态全量调用链日志上报导致网络带宽成本高,可以考虑按需调整固定采样率的比例。

基于固定比例采样的基本原理如下:

dg_part

设置固定比例采样的操作步骤如下:

  1. 登录ARMS控制台
  2. 在左侧导航栏选择应用监控 > 应用列表,并在顶部菜单栏选择目标地域。
  3. 应用列表页面单击目标应用的名称。
  4. 在左侧导航栏中单击应用设置,并在右侧页面单击自定义配置页签。
  5. 调用链采样设置区域,可以打开或关闭调用链采样开关,并设置采样率。采样率设置字段输入百分比的数字部分即可,例如输入10代表采样10%。
    重要 修改即时生效,无需重启应用。如果关闭采样,则调用链数据将不会被采集,请谨慎操作。
    Chain sampling

线程剖析慢调用采样

线程剖析慢调用采样就是记录触发线程剖析慢调用监听的调用链数据。开启线程剖析后,ARMS在记录慢调用的同时会向下传递一个采样标记,并保留该次慢调用的下游链路。不过,为了避免影响客户端性能,线程剖析监听数是有限的,如果有多个慢调用同时发生,仅会记录部分满足条件的慢调用及其下游调用链路。

线程剖析慢调用采样适用于以下场景:

  • 系统出现偶发性慢调用,例如夜间服务响应耗时从0.5s突增到10s。如果提前打开线程剖析(默认触发阈值为2s),ARMS会自动记录该次请求2s至10s之间的慢调用本地方法栈,及其下游调用链路。
  • 秒杀或周期性大促峰值期间系统响应慢,线程剖析会记录满足触发阈值的慢调用本地方法栈,及其下游调用链路。

线程剖析慢调用采样的基本原理如下:

dg_slow

设置线程剖析慢调用采样的操作步骤如下:

  1. 登录ARMS控制台
  2. 在左侧导航栏选择应用监控 > 应用列表,并在顶部菜单栏选择目标地域。
  3. 应用列表页面单击目标应用的名称。
  4. 在左侧导航栏中单击应用设置,并在右侧页面单击自定义配置页签。
  5. 线程设置区域,可以打开或关闭线程诊断方法栈开关、线程剖析总控开关,并设置慢调用监听触发阈值。
    Thread Settings
    说明 服务调用耗时超过慢调用监听触发阈值(默认值为1000毫秒)时才会启动监听,并一直持续到该次调用结束或超过15秒。建议将此阈值设为调用耗时的第99百分位数。假设有100次调用,则按耗时从小到大排序,排在第99位的耗时就是第99百分位数。

基于时间特征采样

基于时间特征采样是指根据应用的时间特征进行采样,例如在线诊断和离线分析。不同的诊断场景对于采样率的要求也不尽相同。ARMS支持在线诊断场景临时全量采集,方便您快速定位线上问题。开启实时诊断后,ARMS会持续监控应用5分钟,并在这5分钟内全量上报调用链数据。接下来,您就能以出现性能问题的调用链路为起点,通过方法栈瀑布图和线程剖析等功能定位问题原因。

基于时间特征采样适用于以下场景:

当您需要密切监控一小段时间内的应用性能时,例如发布应用或者对应用进行压测时。

基于时间特征采样的基本原理如下:

dg_temp

设置时间特征采样的操作步骤如下:

  1. 登录ARMS控制台
  2. 在左侧导航栏选择应用监控 > 应用列表,并在顶部菜单栏选择目标地域。
  3. 应用列表页面单击目标应用的名称。
  4. 在左侧导航栏选择应用诊断 > 实时诊断

    首次进入实时诊断页面时,默认自动开启实时诊断。其他情况下,如需开启实时诊断,请单击页面右上角的开启实时诊断

    实时诊断将于自动开启5分钟后自动终止。如需提前终止实时诊断,请单击页面右上角的暂停定时刷新