本文介绍当控制台还能查到不存在的服务提供者IP链接时如何解决。
问题现象
应用服务实例停止,注册配置中心控制台仍能看到该服务实例。
应用服务重启或发布后,注册配置中心控制台仍能看到该服务实例。
可能原因
服务实例并未彻底关闭,进程仍然存在并发送心跳维持连接,导致Nacos未摘除服务提供。
有额外的应用进程在发送心跳维持连接,导致Nacos未摘除服务提供者。
解决方案
(1) 确认该服务实例已经不应该在线的情况下,先在MSE控制台上对该服务提供者执行下线操作,防止有更多流量进入到该故障节点。
(2) 根据部署环境的不同排查服务提供者是否未彻底关闭:
直接部署到云主机:登录到对应IP的云主机上,使用ps -ef | grep ${应用名}、netstat -anp | grep 48588或netstat -anp | grep 47588等命令,查看服务提供者进程是否还存在,是否与Nacos还保持着连接。如果是,则确认后关闭该进程。
通过自建Kubernetes、Docker或容器服务部署:检查是否存在幽灵Pod或Container(即Pod或Container已经不可见,但对应的程序进程未终止销毁),可通过在Node或宿主机上执行ps -ef | grep ${应用名}等命令,查看是否该应用提供者的个数等同于期望个数。如果不相同,则确认后找到该幽灵Pod并彻底关闭。