开发者社区 > 云原生 > 正文

熔断设置成RT,count设置成5000,线程超时是6秒,为何没熔断?

熔断设置成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

展开
收起
码字王 2023-05-19 19:03:57 80 0
1 条回答
写回答
取消 提交回答
  • Sentinel 默认统计的 RT 上限是 4900 ms,超出此阈值的都会算作 4900 ms,因此超出 4900 ms 的 RT 降级默认都不会生效。若需要变更此上限可以通过启动配置项 -Dcsp.sentinel.statistic.max.rt=xxx 来配置。

    原回答者GitHub用户sczyh30

    2023-05-19 21:26:53
    赞同 展开评论 打赏

阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。

相关电子书

更多
多IO线程优化版 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载