今天偶然发现项目中的一个定时任务会出现服务调用超时的情况(由于是虚拟机开发环境,cpu效率比较低,调用执行时长超过1s),开始以为是feign的懒加载造成的,然后配置了饥饿加载的方式:6.9 Caching of Ribbon Configuration
feign.RetryableException: Read timed out executing POST http:****
在yml配置文件中添加:
ribbon:
eager-load:
enabled: true
clients: client1, client2, client3 # 服务提供的serviceName
feign:
client:
config:
default:
connectTimeout: 3000 #单位毫秒
readTimeout: 12000 #单位毫秒
结果发现熔断超时了,然后又配置了hystrix:
hystrix:
command:
default:
execution:
timeout:
enabled: true #是否开启熔断超时
isolation:
thread:
timeoutInMilliseconds: 10000 #单位毫秒
添加完以上配置超时问题解决。具体参数请根据自身业务情况配置…
附加其他超时配置,请自行调试:
# 设置ribbon超时时间
ribbon:
ReadTimeout: 5000
ConnectTimeout: 2000
注:feign的超时时长应根据Ribbon的超时时间和Hystrix的超时时间配置,即可理解为:
feign timeout = Ribbon timeout + Hystrix timeout