Sentinel降级-异常比例
一、是什么
异常比例 (ERROR_RATIO):当单位统计时长(statIntervalMs)内请求数目大于设置的最小请求数目,并且异常的比例大于阈值,则接下来的熔断时长内请求会自动被熔断。经过熔断时长后熔断器会进入探测恢复状态(HALF-OPEN 状态),若接下来的一个请求成功完成(没有错误)则结束熔断,否则会再次被熔断。异常比率的阈值范围是 [0.0, 1.0],代表 0% - 100%。
二、测试
- 代码
@GetMapping("/testC")
public String testC(){
log.info("------testC 异常比例");
int age=10/0;
return "------testC 异常比例";
}
- 配置
- jemeter压力测试:
- 设置每秒请求数
- 设置请求路径url
-
测试
1.未使用jemeter情况下测试/testC接口
会直接报错,因为定义分母不能为0
2.使用jemeter情况下测试/testC接口
自动熔断,因为每秒请求数大于五并且错误率超过了0.2
-
结论
按照上述配置:
- 单独访问一次,必然来一次报错一次(int age = 10/0),调一次错一次;
异常比例 (ERROR_RATIO):当单位统计时长(statIntervalMs)内请求数目大于设置的最小请求数目,并且异常的比例大于阈值,则接下来的熔断时长内请求会自动被熔断。经过熔断时长后熔断器会进入探测恢复状态(HALF-OPEN
状态),若接下来的一个请求成功完成(没有错误)则结束熔断,否则会再次被熔断。异常比率的阈值范围是 [0.0, 1.0],代表 0% -
100%。
- 开启jmeter后,直接高并发发送请求,多次调用达到我们的配置条件了。断路器开启(保险丝跳闸),微服务不可用了,不再报错error而是服务降级了。