Feign抛出SocketTimeoutException超时异常

SpringCloud微服务中Feign抛java.net.SocketTimeoutException: Connection timed out异常

在这里插入图片描述

最近在写微服务项目时,服务消费者总会跳出连接超时错误,也试过设置Feign的超时时间(feign.client.config.default.connectTimeout),但是并没有什么作用。而且在用登录功能做测试的时候,发现虽然抛出异常,但是仍然能够正常登录,最后发现是服务搭建的问题

当时nacos运行于阿里云上,云上同时也运行着登录微服务,本地运行着服务消费者与一个登录微服务作为后续开发与测试。情况如下:
在这里插入图片描述

我设置的Feign负载均衡策略是轮询,当客户端请求本地的服务消费者时,Feign会轮流请求位于云上和本地的两个登录微服务,但是当服务消费者请求位于云上的登录微服务时是无法获取响应的(本地与阿里云无法互通,只能发送请求,无法获取响应),因此在等待无响应时会抛出超时异常并转而请求本地登录微服务进而从本地获取响应,这大概就是程序虽然会抛出连接超时异常但是登录功能正常的原因。

通过测试也能验证这一结论,我在本地的登录微服务上加上的一条输出语句,用来区别到底是哪一个登录微服务处理了请求,结果就是4次请求均有本地登录微服务处理,云上的登录微服务一条都没有处理
在这里插入图片描述

解决方法有两种,都很简单。
①关闭云上登录微服务,客户端请求本地服务消费者
② 将服务消费者放至云上,客户端请求云上服务消费者

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值