本文介绍服务提供者关闭后还在被其他应用调用的解决方案。
问题现象
其他应用调用依赖的服务时报错,错误信息显示仍然在调用一个已经下线或停止的服务实例的IP地址。
可能原因
服务实例并未彻底关闭,进程仍然存在并发送心跳维持连接,导致Nacos未摘除服务实例。或有额外的应用进程在发送心跳维持连接,导致Nacos未摘除服务实例。
停止服务实例后,该服务已经没有可用的提供者,触发了推空保护。
网络问题或订阅者应用有问题,导致Nacos-Client未获取到最新的服务实例列表。
Nacos-Client已经获取到最新的服务实例地址,但应用未使用(如有路由规则、权重规则、框架缓存等)。
解决方案
(1) 在MSE控制台查看该服务提供者是否还存在,具体操作方式参考服务管理。
(2) 如果控制台上仍然能看到该服务提供者IP,则解决方案请参考 #5.1.2.16 控制台还能查到不存在的服务实例IP如何处理的。
(3) 如果控制台上已经看不到该服务提供者IP,且服务下已经没有服务提供者或所有服务提供者均为下线状态,那么应该是触发了推空保护,可以关闭推空保护。
(4) 如果控制台上已经看不到该服务提供者IP,但服务下仍有其他非下线状态的服务提供者,则解决方案可以参考#5.1.2.18 应用服务调用的服务实例与预期不符。