• 平均响应时间 (DEGRADE_GRADE_RT):当 1s 内持续进入 5 个请求,对应时刻的平均响应时间(秒级)均超过阈值(count,以 ms 为单位),那么在接下的时间窗口(DegradeRule 中的 timeWindow,以 s 为单位)之内,对这个方法的调用都会自动地熔断(抛出 DegradeException)。注意 Sentinel 默认统计的 RT 上限是 4900 ms,超出此阈值的都会算作 4900 ms,若需要变更此上限可以通过启动配置项 -Dcsp.sentinel.statistic.max.rt=xxx 来配置。
  • 异常比例 (DEGRADE_GRADE_EXCEPTION_RATIO):当资源的每秒请求量 >= 5,并且每秒异常总数占通过量的比值超过阈值(DegradeRule 中的 count)之后,资源进入降级状态,即在接下的时间窗口(DegradeRule 中的 ,以 s 为单位)之内,对这个方法的调用都会自动地返回。异常比率的阈值范围是 [0.0, 1.0],代表 0% - 100%。
  • 异常数 (DEGRADE_GRADE_EXCEPTION_COUNT):当资源近 1 分钟的异常数目超过阈值之后会进行熔断。注意由于统计时间窗口是分钟级别的,若 timeWindow 小于 60s,则结束熔断状态后仍可能再进入熔断状态。注意:异常降级仅针对业务异常,对 Sentinel 限流降级本身的异常(BlockException)不生效。为了统计异常比例或异常数,需要通过 Tracer.trace(ex) 记录业务异常。示例:
  1. 1529399827825,total:0, pass:0, block:0
  2. 1529399829825,total:19179, pass:4, block:19176
  3. 1529399830824,total:19806, pass:0, block:19806 // 开始被降级
  4. 1529399832824,total:19481, pass:0, block:19481
  5. 1529399833826,total:19241, pass:0, block:19241
  6. 1529399834826,total:17276, pass:0, block:17276
  7. 1529399836826,total:19490, pass:0, block:19492
  8. 1529399837828,total:19355, pass:0, block:19355
  9. 1529399838827,total:11388, pass:0, block:11388
  10. 1529399839829,total:14494, pass:104, block:14390 // 10秒之后恢复,然而又迅速地被降级
  11. 1529399840854,total:18505, pass:0, block:18505
  12. 1529399841854,total:19673, pass:0, block:19676