Spring Boot+Nacos+MySQL微服务问题排查指南

文章目录

    • [🎯 场景设定](#🎯 场景设定)
  • [🛠️ 定制排查命令模板:Spring Boot + Nacos + MySQL](#🛠️ 定制排查命令模板:Spring Boot + Nacos + MySQL)
      • [🔎 第一步:查看应用日志(定位错误根源)](#🔎 第一步:查看应用日志(定位错误根源))
      • [🔎 第二步:确认应用是否在运行](#🔎 第二步:确认应用是否在运行)
      • [🔎 第三步:检查端口是否监听](#🔎 第三步:检查端口是否监听)
      • [🔎 第四步:测试网络连通性](#🔎 第四步:测试网络连通性)
      • [🔎 第五步:检查配置文件](#🔎 第五步:检查配置文件)
      • [🔎 第六步:检查 Nacos 配置是否存在](#🔎 第六步:检查 Nacos 配置是否存在)
      • [🔎 第七步:检查数据库连接](#🔎 第七步:检查数据库连接)
      • [🔎 第八步:检查系统资源](#🔎 第八步:检查系统资源)
      • [🔎 第九步:检查服务启动命令](#🔎 第九步:检查服务启动命令)
      • [🔎 第十步:一键打包诊断信息(可选)](#🔎 第十步:一键打包诊断信息(可选))
    • [📌 总结:排查流程图](#📌 总结:排查流程图)

以下内容适用于 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

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


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

bash 复制代码
# 进入日志目录
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

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

bash 复制代码
# 查看 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

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


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

bash 复制代码
# 检查你的服务端口(如 9202)
ss -tulnp | grep :9202

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

# 检查 MySQL 端口
ss -tulnp | grep :3306

✅ 正常:显示 LISTEN 状态和 javamysqld 进程

❌ 异常:无输出 → 服务未启动或端口配置错误


🔎 第四步:测试网络连通性

bash 复制代码
# 测试 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 失败,可能是:

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

🔎 第五步:检查配置文件

bash 复制代码
# 查找 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

📌 确认配置中是否有:

yaml 复制代码
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 配置是否存在

bash 复制代码
# 使用 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 内容,包含数据库配置。


🔎 第七步:检查数据库连接

bash 复制代码
# 登录 MySQL
mysql -h 127.0.0.1 -u root -p

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

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

📌 如果连接失败,检查:

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

🔎 第八步:检查系统资源

bash 复制代码
# 查看 CPU 和内存
top -b -n 1 | head -20

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

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

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


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

bash 复制代码
# 查看你是如何启动的
ps aux | grep java | grep jar

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

📌 确保:

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

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

创建一个诊断脚本 diagnose.sh

bash 复制代码
#!/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"

运行:

bash 复制代码
chmod +x diagnose.sh
./diagnose.sh > diagnose.log

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


📌 总结:排查流程图

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

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

相关推荐
岁岁种桃花儿1 小时前
SpringCloud从入门到上天:Nacos做微服务注册中心(二)
java·spring cloud·微服务
汤姆yu3 小时前
基于springboot的尿毒症健康管理系统
java·spring boot·后端
暮色妖娆丶3 小时前
Spring 源码分析 单例 Bean 的创建过程
spring boot·后端·spring
·云扬·4 小时前
MySQL 8.0 Redo Log 归档与禁用实战指南
android·数据库·mysql
biyezuopinvip4 小时前
基于Spring Boot的企业网盘的设计与实现(任务书)
java·spring boot·后端·vue·ssm·任务书·企业网盘的设计与实现
JavaGuide4 小时前
一款悄然崛起的国产规则引擎,让业务编排效率提升 10 倍!
java·spring boot
7哥♡ۣۖᝰꫛꫀꪝۣℋ5 小时前
微服务负载均衡
spring·微服务
figo10tf5 小时前
Spring Boot项目集成Redisson 原始依赖与 Spring Boot Starter 的流程
java·spring boot·后端
zhangyi_viva5 小时前
Spring Boot(七):Swagger 接口文档
java·spring boot·后端
橙露5 小时前
Spring Boot 核心原理:自动配置机制与自定义 Starter 开发
java·数据库·spring boot