Hystrix1.5.3本地运行报HystrixRuntimeException超时回退失败如何解决
排查解决步骤
- 确认方法调用逻辑:
@HystrixCommand依赖Spring AOP切面实现功能,只有外部类调用该方法时切面才会生效。如果是在当前类内部通过this直接调用getBookDetail,Hystrix流程会执行异常,出现超时但不运行目标方法的情况。必须内部调用的话,要先从Spring容器中拿到当前类的代理对象,再通过代理对象调用方法。 - 排查依赖版本冲突:报错栈显示当前rxjava版本为1.0.12,而Hystrix 1.5.3最低适配rxjava 1.0.14版本,低版本rxjava会导致命令执行链路故障,无法触发目标方法运行。可以手动指定rxjava版本为1.1.10(Hystrix 1.5.3官方适配版本),同时排查是否有其他依赖强制引入了低版本rxjava。
- 检查线程池资源:如果本地环境有其他使用相同
BookServicegroupKey的Hystrix命令,可能会占满该线程池的所有资源,新任务一直排队直到超时都不会执行。可以开启Hystrix指标监控,查看对应线程池的活跃线程数、排队任务数,确认是否存在资源耗尽的问题。 - 可选配置调整:不需要降级逻辑的话,可以在
@HystrixCommand的commandProperties里添加配置@HystrixProperty(name = "fallback.enabled", value = "false"),避免无降级方法时抛出额外的fallback失败异常。
内容的提问来源于stack exchange,提问作者R S
相关产品推荐
相关产品推荐

