> 本文由 苏州市天智教育培训中心 技术团队整理,基于真实生产故障复盘,面向一线运维与开发同学,可直接用于排障参考。

一、问题现象

服务启动日志没有任何报错,但 Nacos 控制台上该服务实例列表是空的,网关转发全 503。重启服务有时好有时坏,非常随机。

二、排查思路速览

先按下面的路径走,每一步都有明确的判断分支,避免"上来就重启"这种无效操作。

Nacos · 服务注册不上 / 实例列表为空网关卡返回 503,实例列表为空开始在 Nacos 控制台确认命名空间与分组是否对得上命名空间/分组是否正确?判断是往下查网络与鉴权否最常见:客户端配错 namespace 或 group核查客户端配置的 server-addr 与鉴权用户名密码检查 Nacos 服务端是否开启了鉴权而客户端未配 token看客户端日志是否有 gRPC/HTTP 连接异常确认服务端磁盘与内存未打满导致拒绝写入实例出现在列表,网关恢复结束

三、先看清链路:Nacos 的典型架构

动手之前先明确"请求经过了哪些环节",把问题定位到具体一层,排查效率会成倍提升。

Nacos 注册与配置链路客户端微服务 A微服务 BSDK 长连接服务端Nacos 节点1Nacos 节点2Nacos 节点3存储MySQL 集群本地缓存快照观测健康检查日志连接数监控

四、根因分析

结合现场日志、监控与配置,逐条核对,绝大多数情况都能收敛到下面这几类原因:

  1. 客户端 namespace 或 group 与服务端不一致(最常见)
  2. Nacos 开启鉴权后客户端没配用户名密码,注册被拒
  3. 服务端磁盘写满或集群脑裂,注册请求失败
  4. 客户端与服务端 gRPC 端口(9848/9849)被防火墙拦截
  5. 瞬时注册压力过大,服务端连接数被打满

五、处置过程

处置原则:先止血、再根治。先让业务恢复,再回头解决根因,不要在故障中做长期改造。

  1. 先对齐"三要素":地址 / 命名空间 / 分组
  2. 开启鉴权后所有客户端必须同步更新,属于典型的"改一半"故障
  3. gRPC 端口别忘了在防火墙与安全组放行
  4. 服务端连接数可以调大,但更该查为什么客户端反复重连

六、关键命令与配置

下面这些命令/配置可以直接在生产上核对(执行前请确认环境与权限):

spring:
  cloud:
    nacos:
      discovery:
        server-addr: nacos.internal:8848
        namespace: prod
        group: DEFAULT_GROUP
        username: nacos
        password: ${NACOS_PWD}
      config:
        server-addr: nacos.internal:8848
        namespace: prod

七、复盘

故障恢复后必须做复盘,重点不是"谁的责任",而是"哪个机制缺位":

  1. 根因是测试环境加了鉴权,生产只改了网关没改业务服务
  2. 复盘发现没有"配置一致性"检查,全靠人盯
  3. Nacos 服务端连接数也偏高,说明有客户端在反复重连,是隐患

八、预防建议

  1. 建立"注册三要素"上线检查清单
  2. 鉴权开关变更必须全量服务一起发
  3. 监控 Nacos 连接数与注册 QPS,异常增长告警
  4. 防火墙 / 安全组变更纳入变更评审

九、写在最后

上面这套排查方法,是 Nacos 在生产环境中最常见的一类问题,也是运维方向岗位面试里经常被追问的场景题。很多人搜「苏州运维」或者关心「苏州运维哪个好」,真正想确认的其实是:课程讲不讲真实的线上故障。我们在云计算运维工程师课程里,会把这类故障做成实战演练——从监控曲线、日志、命令输出一路推到根因,再动手恢复,而不是背命令。苏州校区面授 + 线上同步,主打包就业的运维培训,就业推荐覆盖江浙沪。如果你正在做运维方向、或者想转行进入运维领域,可以了解一下我们的课程(苏州运维、苏州运维哪个好、包就业的运维培训),也可以直接联系我们做一次免费的职业与技术评估。

十、延伸阅读