文章目录
-
- [🎯 场景设定](#🎯 场景设定)
- [🛠️ 定制排查命令模板: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
状态和 java
或 mysqld
进程
❌ 异常:无输出 → 服务未启动或端口配置错误
🔎 第四步:测试网络连通性
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
放在项目根目录,团队共享。