系统规则从整体维度对应用入口流量进行控制,根据应用负载、CPU使用率、总体平均RT、入口QPS和并发线程数等几个维度的监控指标,结合自适应的流控策略,让系统的入口流量和系统的负载达到一个平衡,保证系统在最大吞吐量的状态下稳定运行。

前提条件

请确保您的Java应用已开启限流降级功能。具体步骤,请参见设置限流降级

背景信息

系统支持开启自适应流控或手动设置系统规则:
  • 自适应流控:当开启自适应流控,系统会根据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. 登录SAE控制台
  2. 在左侧导航栏单击应用列表,在应用列表页面上方选择地域,单击具体应用名称。
  3. 在左侧导航栏中选择限流降级(仅支持Java) > 规则管理
  4. 规则管理页面,单击系统规则,在系统规则页签,单击新增系统保护规则
  5. 新增系统保护规则对话框,设置参数,单击新建
    新增系统保护规则

    参数说明如下:

    参数 描述 使用场景说明
    CPU使用率 当系统CPU使用率超过阈值即触发系统保护,阈值设置范围为0.0~1.0(代表0%~100%)。 适用于设置基础资源水位的场景,比如需要保证一定的冗余水位。但系统水位不宜过高,需要留部分水位。
    Load 当系统的Load1超过阈值,且系统当前的并发线程数超过系统容量时才会触发系统保护。系统容量由系统的maxQps * minRt计算得出。 适用于设置基础资源水位的场景,比如需要保证一定的冗余水位。但系统水位不宜过高,需要留部分水位。
    线程数 当单台机器上所有入口流量的并发线程数达到阈值即触发系统保护。 适用于设置基础资源水位的场景,比如需要保证一定的冗余水位。但系统水位不宜过高,需要留部分水位。
    入口平均RT 当单台机器上所有入口流量的平均RT达到阈值即触发系统保护,单位是毫秒。 适用于衡量入口请求的场景。
    入口总QPS 当单台机器上所有入口流量的QPS达到阈值即触发系统保护。 适用于衡量入口请求的场景。