⭐⭐⭐ Spring Boot 项目实战 ⭐⭐⭐ Spring Cloud 项目实战
《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》
《Spring Boot 实现原理与源码解析 —— 精品合集》 《Java 面试题 + Java 学习指南》

摘要: 原创出处 blog.csdn.net/haohaizi_liu/article/details/151223658 「刘一说」欢迎转载,保留摘要,谢谢!


🙂🙂🙂关注微信公众号:【芋道源码】有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言都将得到认真回复。甚至不知道如何读源码也可以请教噢。
  4. 新的源码解析文章实时收到通知。每周更新一篇左右。
  5. 认真的源码交流微信群。

以下内容适用于 Spring Boot + Nacos + MySQL 微服务架构 的常见问题(如启动失败、连接超时、配置未加载等)。

场景设定

你有一个 Java 微服务应用(如 your-pro.jar),部署在 Linux 服务器上,使用:

  • Nacos 作为配置中心和注册中心
  • MySQL 作为数据库
  • Spring Boot 框架
  • 日志文件位于 /home/project-cloud/server/your-pro/module/logs/

你发现应用启动失败或无法访问,需要快速排查。

定制排查命令模板:Spring Boot + Nacos + MySQL

建议按顺序执行,每一步都可能定位到问题。

第一步:查看应用日志(定位错误根源)

# 进入日志目录
cd /home/project-cloud/server/your-pro/module/logs/

# 实时查看日志,并高亮 ERROR 和 WARN
tail -f *.log | grep --color=always -E "ERROR|WARN|Exception"

关注关键词:

  • Failed to start
  • DataSource
  • Connection refused
  • Timeout
  • ClassNotFoundException
  • NoSuchBeanDefinitionException

第二步:确认应用是否在运行

# 查看 Java 进程
ps aux | grep java | grep -v grep

# 或精确查找你的服务
ps aux | grep your-pro

正常输出示例:

root  1234  1.2  5.3  2345678  123456  ?  Sl   10:00  0:15 java -jar your-pro.jar

如果没有输出,说明服务未启动或已崩溃。

第三步:检查端口是否监听

# 检查你的服务端口(如 9202)
ss -tulnp | grep :9202

# 检查 Nacos 端口
ss -tulnp | grep :8848
ss -tulnp | grep :9848

# 检查 MySQL 端口
ss -tulnp | grep :3306
  • 正常:显示 LISTEN 状态和 java 或 mysqld 进程
  • 异常:无输出 → 服务未启动或端口配置错误

第四步:测试网络连通性

# 测试 Nacos 是否可达(HTTP)
curl -s -w "%{http_code}\n" -o /dev/null http://10.135.10.33:8848/nacos/v1/console/health

# 测试 Nacos gRPC 端口
telnet 10.135.10.33 9848

# 测试 MySQL 连通性
telnet 127.0.0.1 3306

# 测试本机服务是否响应
curl http://localhost:9202/actuator/health

如果 telnet 失败,可能是:

  • 防火墙阻止
  • 安全组未开放(云服务器)
  • 服务未监听

第五步:检查配置文件

# 查找 bootstrap.yml 或 application.yml
find /home/project-cloud -name "bootstrap*.yml" -o -name "application*.yml" 2>/dev/null

# 查看配置内容(重点关注数据库和 Nacos)
cat /home/project-cloud/server/your-pro/module/config/bootstrap.yml

# 检查是否配置了数据库
grep -A 5 -B 2 "datasource" bootstrap.yml

确认配置中是否有:

spring:
datasource:
url: jdbc:mysql://...
username: ...
password: ...
cloud:
nacos:
discovery:
server-addr: 10.135.10.33:8848
config:
server-addr: 10.135.10.33:8848

第六步:检查 Nacos 配置是否存在

# 使用 curl 查看 Nacos 配置(替换 dataId 和 group)
curl "http://10.135.10.33:8848/nacos/v1/cs/configs?dataId=your-pro-test.yml&group=DEFAULT_GROUP"

# 如果有权限,可加用户名密码
curl -u nacos:nacos "http://10.135.10.33:8848/nacos/v1/cs/configs?dataId=your-pro-test.yml&group=DEFAULT_GROUP"

应返回你在 Nacos 控制台配置的 yaml 内容,包含数据库配置。

第七步:检查数据库连接

# 登录 MySQL
mysql -h 127.0.0.1 -u root -p

# 检查数据库是否存在
SHOW DATABASES LIKE 'your_pro';

# 检查表(如果是代码生成器)
USE your_pro;
SHOW TABLES;

如果连接失败,检查:

  • MySQL 是否启动
  • 用户权限
  • bind-address 是否限制了 IP

第八步:检查系统资源

# 查看 CPU 和内存
top -b -n 1 | head -20

# 查看磁盘空间
df -h / /home

# 查看日志目录占用
du -sh /home/project-cloud/server/*/logs/*.log

避免因磁盘满导致日志写入失败或应用崩溃。

第九步:检查服务启动命令

# 查看你是如何启动的
ps aux | grep java | grep jar

# 正确示例:
# java -jar your-pro.jar --spring.profiles.active=test

确保:

  • 使用了正确的 --spring.profiles.active
  • 没有遗漏 JVM 参数(如 -Dnacos.server.addr=...)

第十步:一键打包诊断信息(可选)

创建一个诊断脚本 diagnose.sh:

#!/bin/bash
echo "=== 诊断时间: $(date) ==="
echo
echo "【1. Java 进程】"
ps aux | grep java | grep -v grep
echo
echo "【2. 端口监听】"
ss -tulnp | grep -E ":(8848|9848|9202|3306)"
echo
echo "【3. Nacos 健康】"
curl -s http://10.135.10.33:8848/nacos/v1/console/health
echo
echo "【4. 磁盘空间】"
df -h /
echo
echo "【5. 最近日志】"
tail -n 20 /home/peoject-cloud/server/your-pro/module/logs/*.log | grep -E "ERROR|WARN"

运行:

chmod +x diagnose.sh
./diagnose.sh > diagnose.log

把 diagnose.log 发给同事或发到群里,快速定位问题。

总结:排查流程图

启动失败?
↓
→ 查日志(tail -f)
↓
→ 看进程(ps aux)
↓
→ 查端口(ss -tulnp)
↓
→ 测试连通(telnet/curl)
↓
→ 检查配置(bootstrap.yml + Nacos)
↓
→ 验证数据库
↓
→ 检查资源(CPU/内存/磁盘)
↓
→ 修复并重启

建议:把这个模板保存为 troubleshoot.md 放在项目根目录,团队共享。

文章目录
  1. 1. 场景设定
  2. 2. 定制排查命令模板:Spring Boot + Nacos + MySQL
    1. 2.0.0.1. 第一步:查看应用日志(定位错误根源)
    2. 2.0.0.2. 第二步:确认应用是否在运行
    3. 2.0.0.3. 第三步:检查端口是否监听
    4. 2.0.0.4. 第四步:测试网络连通性
    5. 2.0.0.5. 第五步:检查配置文件
    6. 2.0.0.6. 第六步:检查 Nacos 配置是否存在
    7. 2.0.0.7. 第七步:检查数据库连接
    8. 2.0.0.8. 第八步:检查系统资源
    9. 2.0.0.9. 第九步:检查服务启动命令
    10. 2.0.0.10. 第十步:一键打包诊断信息(可选)
  • 3. 总结:排查流程图