Nacos `Client not connected / STARTING / Timeout`无法连接解决思路
·
Nacos Client not connected / STARTING / Timeout 排障实录
1. 问题现象
应用启动报错,核心异常包括:
ErrCode:-401, ErrMsg:Client not connected, current status:STARTINGjava.util.concurrent.TimeoutExceptionServer check fail, please check server x.x.x.x ,port 9848 is available- 后续还出现过
port 9080 is available
应用启动链路中断在 Nacos 自动注册阶段:
NacosServiceRegistry.register(...)AbstractAutoServiceRegistration.start(...)
2. 根因结论
这次问题不是业务代码问题,核心是 Nacos 连接配置 + 网络端口可达性:
application-local.yaml中server-addr一度被写成非法值(包含http://和多余文本),导致客户端连接异常。- 即使 HTTP 端口可访问,Nacos 2.x 服务注册/发现依赖 gRPC 端口,若不通会报
STARTING或Timeout。 - 防火墙/安全组未放行对应端口时,本地到 Nacos 的
TcpTestSucceeded=False。 - 当日志提示校验
9080时,说明当前生效的 Nacos 主端口不是8848(可能被环境变量/启动参数覆盖为8080,因此 gRPC 端口变成9080)。
3. 关键知识点(Nacos 2.x)
- 主通信端口通常是
8848 - gRPC 端口通常是
9848(主端口 + 1000) - 另一个相关端口常见为
9849
如果主端口被改为 8080,则会看到客户端尝试 9080。
4. 这次实际修复步骤
步骤 1:修正应用配置
文件:src/main/resources/application-local.yaml
将 server-addr 修正为标准格式:
spring:
cloud:
nacos:
server-addr: xxxx:8848
注意:
- 必须是
host:port - 不要写
http:// - 不要夹杂任何额外文本
步骤 2:在客户端机器验证连通性(Windows)
Test-NetConnection xxxx -Port 8848
Test-NetConnection xxxx -Port 9848
如果返回 TcpTestSucceeded : False,说明网络路径未打通。
步骤 3:在 Nacos 服务器确认服务监听
ss -lntp | egrep '8848|9848|9849'
本次结果显示服务器监听正常:8848/9848/9849 都在监听。
步骤 4:放行云安全组 + 系统防火墙
需要放行 TCP 端口:
884898489849(建议)
firewalld 示例:
firewall-cmd --permanent --add-port=8848/tcp
firewall-cmd --permanent --add-port=9848/tcp
firewall-cmd --permanent --add-port=9849/tcp
firewall-cmd --reload
firewall-cmd --list-ports
步骤 5:再次验证并重启应用
当 8848、9848 测试都为 TcpTestSucceeded : True 后,应用启动恢复正常。
5. 为什么会出现“8848 正常但仍注册失败”
因为 curl http://127.0.0.1:8848/... 仅证明了 HTTP 接口可用;
而 Spring Cloud Alibaba 的注册过程需要 Nacos gRPC 通道,如果 9848 不通,仍会失败。
6. 遇到 9080 报错时怎么处理
出现 please check ... port 9080 时,不是“多开一个随机端口”,而是要排查谁覆盖了 Nacos 主端口:
- 配置文件
- 环境变量:
SPRING_CLOUD_NACOS_SERVER_ADDR/NACOS_SERVER_ADDR - JVM 参数:
-Dspring.cloud.nacos.server-addr=... - 启动参数:
--spring.cloud.nacos.server-addr=...
可临时强制指定验证:
java -jar app.jar --spring.cloud.nacos.server-addr=xxxx:8848
7. 最终结论
本次问题通过“修正 server-addr + 放行防火墙端口”解决,应用已成功启动。
可复用的最小排障顺序:
- 先看
server-addr是否为纯host:port - 客户端测
8848/9848 - 服务端查监听
8848/9848/9849 - 放行安全组与防火墙
- 排查配置覆盖(尤其出现
9080时)
更多推荐

所有评论(0)