在说这个问题的时候,作者真心想吐槽,由于作者在一个特殊的环境无法访问外网,所以用了度娘去查,发现搜索到的结果真的没啥用,有的根本就说不清为啥这么配置解决问题,有些简直的恶心一顿抄,有些连配置格式都有问题,真是醉了。本文的目的就想把出现"Hystrix Readed time out"来龙去脉都说清楚。
情景再现
在作者总集的一个乙方的项目,出现一个奇怪的问题就是每天早晨一早第一次请求就出现如下问题,但是多刷新两下情况就正常了。
"timestamp": “2823-89-07T81:12:29 ,455+8088"
"status": 504
"error": gateway Timeout
"message": "com.netflix.zuul.exception.ZuulException: Hystrix Readed time out"
问题原因
该问题从字面上看是hystrix 超时了,hystrix 是啥嗯? 是spring cloud zuul 网关的熔断,为啥会出现这个错误呢,是因为项目做了两个配置一个是ribbon(负载均衡的配置)配置,另一个做了hystrix(熔断的)配置 ,问题就在于hystrix的超时时间比ribbon的超时时间大。如下给一个正确的配置
ribbon:eager-load:enabled: trueReadTimeout: 60000ConnectTimeout: 60000eureka: enabled: true
hystrix:command:default:execution:isolation:thread:timeoutInMilliseconds: 30000 # 设置hystrix的超时时间为6000ms
注意: 如果没有配置超时时间 可能会有默认超时时间 所以原因是雷同的。
如果解决问题,麻烦您点个赞或者评论一下,让笔者知道这篇文章,有效帮助了您,谢谢了!!