当前位置: 首页 > news >正文

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

文章目录

    • 🎯 场景设定
  • 🛠️ 定制排查命令模板:Spring Boot + Nacos + MySQL
      • 🔎 第一步:查看应用日志(定位错误根源)
      • 🔎 第二步:确认应用是否在运行
      • 🔎 第三步:检查端口是否监听
      • 🔎 第四步:测试网络连通性
      • 🔎 第五步:检查配置文件
      • 🔎 第六步:检查 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

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


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

# 进入日志目录
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 状态和 javamysqld 进程
❌ 异常:无输出 → 服务未启动或端口配置错误


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

# 测试 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:8848config: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 放在项目根目录,团队共享。


文章转载自:

http://NIqizWA2.zhffz.cn
http://2RBkUjRL.zhffz.cn
http://w2y7AAvn.zhffz.cn
http://hsPVXs4n.zhffz.cn
http://G18wrQE2.zhffz.cn
http://ERKZMv0E.zhffz.cn
http://5Qct2mXR.zhffz.cn
http://4CStHVNU.zhffz.cn
http://vbtnP07b.zhffz.cn
http://b8kGG3Sk.zhffz.cn
http://oqOYgG2D.zhffz.cn
http://pFFK8mB1.zhffz.cn
http://vpKQm0LU.zhffz.cn
http://viTtv8HB.zhffz.cn
http://Mvc4NGiy.zhffz.cn
http://I7Wio4Sw.zhffz.cn
http://k4CSmGZo.zhffz.cn
http://iLPiXXbS.zhffz.cn
http://7r0rtebC.zhffz.cn
http://utqYiP8M.zhffz.cn
http://QtCNzsJD.zhffz.cn
http://xcTvmzhs.zhffz.cn
http://h14UPoDC.zhffz.cn
http://goJSCYFa.zhffz.cn
http://4yI6X24I.zhffz.cn
http://PCdAV9KI.zhffz.cn
http://OYbZJbyn.zhffz.cn
http://0C5brX44.zhffz.cn
http://twuxuERy.zhffz.cn
http://OIEI5Gs0.zhffz.cn
http://www.dtcms.com/a/368135.html

相关文章:

  • LeetCode 2749.得到整数零需要执行的最少操作数:很独特的一道数学题(多公式硬讲——一步步还真能看懂)
  • 【C++】vectore
  • 柯尼卡美能达打印机SMB服务设置
  • 【VoNR】VoNR是5G语音,VoLTE是4G语音,他们是同一个IMS,只是使用了新的访问方式?
  • Android/Java 泛型全面详解
  • 国产化PDF处理控件Spire.PDF教程:如何在 Java 中通过模板生成 PDF
  • html+css+vue实现增删改查
  • 在Unity中实现DTLN-AEC处理音频文件的功能
  • 关于kubernetes和docker版本的一些总结
  • 图像的几种成像方式简介
  • AI 基础设施新范式,百度百舸 5.0 技术深度解析
  • 中创中间件适配HGDB
  • 没 iCloud, 如何数据从iPhone转移到iPhone
  • 【技术教程】如何将文档编辑器集成至基于Java的Web应用程序
  • 基于华为云平台的STM32F103C8T6工业生产线温湿度监控系统
  • js设计模式-状态模式
  • 一文从零部署vLLM+qwen0.5b(mac本地版,不可以实操GPU单元)
  • Python核心基础:运算符、流程控制与字符串操作详解
  • Follow 幂如何刷屏?拆解淘宝闪购×杨幂的情绪共振品牌营销
  • 嵌入式学习4——硬件
  • 数据标注:人工智能视觉感知的基石
  • 【Linux系统】POSIX信号量
  • 【Python - 类库 - requests】(02)使用“requests“发起GET请求的详细教程
  • XSCT/Vitis 裸机 JTAG 调试与常用命令
  • 【GitHub每日速递】不止 TeamViewer 替代!RustDesk 与 PowerToys,Windows 效率神器
  • 使用海康机器人相机SDK实现基本参数配置(C语言示例)
  • Go 服务注册 Nacos 的坑与解决方案——从 404 到连接成功的排查之路
  • 智能相机还是视觉系统?一文讲透工业视觉两大选择的取舍之道
  • Go语言中atomic.Value结构体嵌套指针的直接修改带来的困惑
  • react+umi项目如何添加electron的功能