# 流控常见问题

本文档主要说明在使用流控插件时遇到的常见问题。

# 关于业务场景的apiPath是如何定义的

  • apiPath指需要作用的接口,针对不同框架定义会有所不同,当前支持http与dubbo协议请求:
    • http协议: 指请求的路径,例如存在接口http://localhost:8080/test, 则其apiPath/test
    • dubbo协议:由"请求接口:接口版本.方法"组成,如果无接口版本或者版本为0.0.0,则apiPath"请求接口.方法"

# 如何确定配置规则生效

  • 首先需在配置中心上正确配置相关业务场景与治理策略,配置后可观察agent日志,一般在jar包启动路径的logs文件夹下,查看sermant-x.log文件, 搜索has been或者配置的键名, 若搜索到的日志与当前时间匹配,则说明规则已生效。

# 熔断策略未生效的可能原因

  • 熔断生效有一定的前提,通常熔断从两个指标来判定:
    • 异常比例:即接口请求发生异常时所占比例,在规定时间内发生异常的比例大于配置的即会触发熔断;
    • 慢调用比例:即接口请求发生慢调用所占比例,设置熔断策略时需设置慢调用的阈值,例如100ms,则必须接口调用耗时超出100ms且超过配置的慢调用比例才可触发;
  • 因此针对以上两项指标,首先排查应用接口是否满足以上其中一个条件,且规则时间内调用超过最小调用数(minimumNumberOfCalls配置)才可触发。

# 隔离仓规则未生效的可能原因

  • 隔离仓规则需满足以下条件:
    • 调用满足并发数(maxConcurrentCalls配置)要求,例如配置的阈值为2,则确保并发数需大于2;
    • 最大等待时间(maxWaitDuration配置),即在达到最大并发数时,线程等待最大时间,超过该时间未拿到许可便会触发;
  • 因此在实际测试时,若模拟该规则,建议确保业务接口耗时大于最大等待时间,并且并发数大于配置值。

# 重试规则未生效的可能原因

  • 确保下游应用抛出的异常或者状态码符合重试策略要求,例如默认dubbo会检测下游是否抛出RpcException,Spring应用则可配置指定状态码检测。

# 启动报HttpHostConnectException异常的可能原因

  • 出现该异常的原因是未启动Sermant后台服务sermant-backhend, 启动sermant-backhend后台服务,并重启应用即可。
上次更新: 2024/12/13 02:38:15