熔断设置成RT,count设置成5000,线程超时是6秒,为何没熔断?貌似count大于等于5000(5秒)时都不行。
Circuit breaking based on RT does not take effect when the count > 5000 ms.
//业务代码 @SentinelResource(value= Constant.SENTINEL_PAAS_RESOURCE,entryType = EntryType.IN, blockHandler = "getTokenBlockHandler",blockHandlerClass = {SessionSentinelUtils.class},fallback = "getTokenDegrade") @Override public RPCResponse getToken() { try { Thread.sleep(6000); String token = jwtService.getToken(); return RPCResponseUtils.success(token); } catch (CommonException e) { return RPCResponseUtils.fail(e.getMsg()); } catch (Exception e) { String msg = "paas服务获取token出错,识别码[" + UUIDUtils.getUUId() + "]"; logger.error(msg, e); return RPCResponseUtils.fail(msg,logFlag,e); } } //熔断规则 private void initDegradeRule() { List rules = new ArrayList<>(); DegradeRule rule = new DegradeRule(); rule.setResource(Constant.SENTINEL_PAAS_RESOURCE); // set threshold RT, 10 ms rule.setCount(5000); rule.setGrade(RuleConstant.DEGRADE_GRADE_RT); rule.setTimeWindow(30); rules.add(rule); DegradeRuleManager.loadRules(rules); }
原提问者GitHub用户ccb19880811
Sentinel 默认统计的 RT 上限是 4900 ms,超出此阈值的都会算作 4900 ms,因此超出 4900 ms 的 RT 降级默认都不会生效。若需要变更此上限可以通过启动配置项 -Dcsp.sentinel.statistic.max.rt=xxx 来配置。
原回答者GitHub用户sczyh30
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。