我使用 feign 客户端连接下游系统。最近下游系统发生了中断,但令人惊讶的是,一旦下游系统启动并运行,从我们系统到下游系统的所有调用都开始超时。没有任何调用到达下游系统,但它们在我们的系统中相当超时。
这是 feign 配置:
feign:
httpclient:
max-connections: 300
max-connections-per-route: 200
follow-redirects: true
client:
config:
default:
connectTimeout: 5000
readTimeout: 5000
Client1:
readTimeout: 1200000
Client2:
readTimeout: 1200000
Feign 客户端在下游系统中断后开始超时的问题可能是由多种因素引起的。以下是诊断和解决问题的详细方法:
连接池问题:
max-connections
和max-connections-per-route
)与下游系统的容量一致。有时,断电后,连接可能无法正确清理。连接状态:
超时设置:
connectTimeout
和 readTimeout
值是否适合您的用例。除非处理非常长时间运行的操作,否则 readTimeout
为 20 分钟(1200000
毫秒)是不寻常的。Feign 配置:
网络问题:
查看和调整连接池设置:
max-connections
和 max-connections-per-route
。检查连接管理:
调整超时值:
connectTimeout
和 readTimeout
设置调整为更合理的值。超时过多可能会掩盖根本问题。断电后测试:
检查日志和监控:
这是一个可能更典型的示例配置:
feign:
httpclient:
max-connections: 100
max-connections-per-route: 50
follow-redirects: true
client:
config:
default:
connectTimeout: 5000
readTimeout: 10000 # Consider a shorter readTimeout
Client1:
readTimeout: 10000
Client2:
readTimeout: 10000
此配置提供了更标准的连接和超时设置方法,应根据您的具体要求和测试结果进行调整。