feign 连接异常:
feign.RetryableException: Connection reset executing POST
替换 feign的 client :
Feign在默认情况下使用的是JDK原生的 URLConnection 发送HTTP请求,没有连接池。
可以尝试替换成 httpclient 或者 okhttp。调整最大连接数。
修改 application.yml :
feign:
# okhttp:
# enabled: true
httpclient:
enabled: true
# 调整连接数,要谨慎些。如果连接数过大也会影响系统。如果不确定,也可以先不修改。
max-connections: 200
# 超时时间,可以适当调大些。
connectTimeout: 5000
readTimeOut: 5000
添加重试:
由于是在 使用 feign 进行网络连接时,发生了异常导致出错,因此也可以尝试 重试。
在 feign 的接口,或者是其他服务的 接口,添加重试的注解,
注意:由于 Spring的 @Retryable注解 的底层使用了AOP,如果是调用同一个类里带有@Retryable注解的方法,注解不会生效,
因此要放在不同的类里面。
@Retryable(value = {Exception.class}, maxAttempts = 3, backoff = @Backoff(delay = 1000, multiplier = 1.5))
Response<ResponseDto> getInfo(@RequestBody RequestDto requestDto);