1.问题概述

- 上图的场景,每次重启项目后openFeign都会报一个超时异常,异常信息如下

2.为什么会产生这个异常?
- 当项目刚启动时,数据库连接池的中的连接并不会创建;第一次请求的时候才会初始化各种池,连接准备等工作;所以导致了第一次初始化建立连接时间很长.feign觉得这个远程调用很久没有返回所以就超时了.
feign默认超时等待是1s.如果1s没有返回数据,会重试几次;重试几次还没返回数据,就报错读取超时异常
思考一个问题:为啥Feign要设置超时时间呢?
- 拿上图来说如果feign不设置超时时间,那么一旦商品微服务一致没有给订单微服务返回数据,订单微服务就会一直占用着一个线程;并且我们的系统远程调用有很多,如果是大量来了,很容易导致整个线程资源被占用完了,直接导致整个系统雪崩
3.解决办法
方式1:在远程调用的接口参数上指定Request.Options options:超时时间


方式2:在调用方配置文件设置超时时间
feign:
client:
config:
qiuqiu:
connectTimeout: 5000
readTimeout: 5000
方式3:方式2是可以解决的,但是怎么设置每个服务都要配置很麻烦,所以全局配置它来了!!!
- 因为我项目中用的是nacos配置中心,所以我把这段配置加入到nacos配置中心进行管理
feign:
client:
config:
default:
connectTimeout: 5000
readTimeout: 5000

- 所以后面的服务我们不配置,则使用的是上面默认的,如果想单独配置,则直接在配置文件中配置即可
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」