今天上班的时候,自己正在参与的Spring Cloud项目出现了问题,原本上周五还正常的项目突然所有接口调用都是返回http 500的错误。
项目的状态是在Eureka上可以看到对应微服务是在线状态,然后在Swagger里面测试接口,发现接口间歇性调用失败,也就是题目中的http 500的错误,如下图。至于是间歇性的原因在于这个服务在线上部署了一个,然后我自己的机器上启动了一个,出问题的就是我自己机器上的。我在多次调用接口后发现,每次调用成功,本地IDE的控制台都没任何信息打印,这放在平常是会打印一些记录的,而控制台上只间歇打印了Eureka的保活报文,所以在这里我基本认定是我本地的微服务出了异常。
这里先插播一个题外话,这个http 500的问题我也不是第一次遇到了,在我最初接触SpringCloud架构开发时就遇到过类似的问题,而且困扰了2天,最后发现是因为线上的微服务挂了,但是Eureka上这个服务还是在线的,导致请求也会分发给这个异常微服务,然后我本地跑了一个正常的,这之后接口调用就是间歇性的http 500了,和这次的情况很相似。
考虑到这个项目上周末还是正常的,也就这周回来第一次启动就出现了这个问题。然后我想了想,这周末机器上只是安装了一个虚拟机VMware,其它什么也没搞。然后又想到安装完虚拟机和centos之后还把虚拟机的虚拟网络设置了一下。打开控制面板一看,果然多了两个VMware的网络适配器,把它俩都禁用之后(只禁用一个不管用),再重新启动项目就正常了。
至于为什么这两个网络适配器会影响到SpringCloud项目的接口调用就不得而知了,以后有时间再研究吧。