今天遇到一个很离谱的问题,微服务项目使用Feign调用时前一秒还可以调用成功,下一秒再去做测试就失败了,项目也没有重启,我注册中心使用的是Nacos,先去看了下Nacos有没有挂掉
并没有,然后我还使用到了Eureka
也没有问题,因为我上一秒还在使用下一秒就挂掉了所以排除了 Feign 客户端服务的 URL、路径、请求方法、参数等配置问题。然后我又检查了下网络,也是没有问题的,然后怀疑是不是版本突然不兼容了?去查看了下官方文档,没有问题,到这里我就有点无语了,简直离了大普,我又去看了下Nacos的log日志
并没有ERROR,有些WARN也不影响。然后我就去打了下断点
走到SynchronousMethodHandler类的invoke方法下直接被RetryableException异常捕获了,然后就是超时
之前看到百度又说可能会是超时设置不合理,改完之后还是这个样子!!! 然后我想着换下端口试一下吧,试了一下可以,Feign调用端口未被占用但是无法调用Feign服务,更换端口可以解决问题的原因:
1.防火墙或网络配置问题:可能存在防火墙或网络配置,限制了当前端口与Feign服务之间的通信。更换端口号后,这些限制可能会被绕过,使得通信得以恢复。
2.系统资源限制:虽然当前端口没有被其他进程占用,但是可能由于系统资源限制,导致原来的端口无法建立连接。通过更换端口号,避免了系统资源限制,从而使通信恢复正常。
3.依赖冲突或版本不兼容:有时候,依赖库或框架之间的冲突或版本不兼容可能导致某些功能无法正常使用。通过更换端口号,可能改变了系统调用链路或依赖的运行状态,使得冲突或版本不兼容的问题得以解决。
4.缓存或配置问题:有时候,某些操作或配置会被缓存,可能在更换端口号后缓存的内容被重新加载或重置,从而解决了原先的问题。
真是个奇奇怪怪的问题,在此记录下,如果你也有此类问题可以试一下,也许有帮助