记一次异常微服务之间的调用失败处理:
问题: 两个服务都注册到eurek上面了,但是,其中一个服务去访问另外一个服务的时候,老是触发熔断,打断点调试,请求不会进入到被调用方.
其中一部分异常信息为: niws.loadbalancer.availabilityFilteringRule.activeConnectionsLimit = 2147483
一开始以为是配置问题: 随后修改配置文件,修改超时时间,连接时间,等,配置ribbon的client等,皆无用处,最后甚至怀疑自己是不是那里写错了,去检查代码,也找不到问题.
分析: 服务配置无问题,能启动,能注册到eurek上面,按理说,应该能够访问.但是访问不了,然后我写了其它测试方法在另外两个服务之间调用,可以,在本机把不能被调用的服务启动,也可以,中间耗时良久.遂想到可能是启动服务的机器的问题.
原因: 不能被调用的服务所部署的那台机器,对外暴露的端口为187,但是他是拥有虚拟机配置网卡的,ip为82,服务以82的ip注册到eurek中.故不能被其它服务调用.
解决: 将虚拟网卡禁用,启动服务,服务以187的ip注册到eurek中,调用成功!
我这个文章是有问题的,模块之间访问不通的原因有很多,我说的只是众多可能性中的一个.
太片面了,最终还是要多调试,多排查问题.
首先看看eurak上面有没有挂载对应的模块. 然后看项目中写的模块名是否正确. 能不能对应到具体的模块. 然后就是打印日志,以及排查问题了.