自适应流控

系统支持自适应流控或手动设置系统规则,自适应流控是根据系统的CPU使用率自动动态地调整应用程序的入口流量;系统规则是从整体维度手动设置规则,对应用入口流量进行控制。目的都是为了让系统的入口流量和系统的负载达到一个平衡,保证系统在最大吞吐量状态下稳定运行。

前提条件

将应用接入AHAS应用防护,具体操作请参见接入应用方式

背景信息

系统支持开启自适应流控或手动设置系统规则:
  • 自适应流控:当开启自适应流控,系统会根据CPU使用率动态调节应用的入口流量,在尽可能保证吞吐量的同时保证高负载下系统稳定。
  • 系统规则:当关闭自适应流控,需要您手动设置系统规则。系统规则从整体维度对应用入口流量进行控制,结合应用的负载、CPU使用率、总体平均RT、入口QPS和并发线程数等几个维度的监控指标,让系统的入口流量和系统的负载达到一个平衡,保证系统在最大吞吐量状态下稳定运行。

系统保护规则是应用整体维度的,而不是资源维度的,并且仅对入口流量生效。入口流量指的是进入应用的流量,例如Web服务或Dubbo服务端接收的请求。通过自定义埋点接入和通过注解接入的应用,入口流量为EntryType.IN的逻辑被调用时产生的流量。配置系统规则的对象必须是入口流量,且默认接口为Dubbo或HSF才生效,如默认埋点的Dubbo、Servelet等,或者通过修改EntryType.IN来让系统规则对该方法生效,EntryType.IN的详情请参见通过自定义埋点接入接入Spring应用

系统规则支持以下的模式:
  • Load(仅对Linux、Unix-like机器生效):当系统Load 1超过阈值且系统当前的并发线程数超过系统容量时才会触发系统保护。
  • CPU使用率:当系统CPU使用率超过阈值(0.0~1.0)即触发系统保护。
  • RT:当单台机器上所有入口流量的平均RT达到阈值即触发系统保护。
  • 线程数:当单台机器上所有入口流量的并发线程数达到阈值即触发系统保护。
  • 入口QPS:当单台机器上所有入口流量的QPS达到阈值即触发系统保护。

对于一个应用来说,每种相同的系统保护规则最多只能存在一条,即一个应用最多配置五条系统保护规则。配置系统规则的原理请参见系统防护

新建系统规则

  1. 登录AHAS控制台
  2. 在AHAS控制台左上角,选择应用接入的地域。
  3. 在控制台左侧导航栏中选择流量防护 > 应用防护
  4. 应用防护页面的应用卡片页签单击目标应用卡片。
  5. 在左侧导航栏单击规则管理,然后单击自适应流控页签。
  6. 在页面左上角,关闭自适应流控,在对话框中单击确定关闭
  7. 自适应流控页签右上角单击新增系统保护规则
  8. 新增系统保护规则对话框中配置规则信息。
    参数描述使用场景说明
    CPU使用率当系统CPU使用率超过阈值即触发系统保护,阈值设置范围为0.0~1.0(代表0%~100%)。适用于设置基础资源水位的场景,比如需要保证一定的冗余水位。但系统水位不宜过高,需要留部分水位。
    Load当系统的Load1超过阈值,且系统当前的并发线程数超过系统容量时才会触发系统保护。系统容量由系统的maxQps * minRt计算得出。适用于设置基础资源水位的场景,比如需要保证一定的冗余水位。但系统水位不宜过高,需要留部分水位。
    线程数当单台机器上所有入口流量的并发线程数达到阈值即触发系统保护。适用于设置基础资源水位的场景,比如需要保证一定的冗余水位。但系统水位不宜过高,需要留部分水位。
    入口平均RT当单台机器上所有入口流量的平均RT达到阈值即触发系统保护,单位是毫秒。适用于衡量入口请求的场景。
    入口总QPS当单台机器上所有入口流量的QPS达到阈值即触发系统保护。适用于衡量入口请求的场景。
  9. 单击新增