社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  DATABASE

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

芋道源码 • 1 周前 • 43 次点击  

👉 这是一个或许对你有用的社群

🐱 一对一交流/面试小册/简历优化/求职解惑,欢迎加入芋道快速开发平台知识星球。下面是星球提供的部分资料: 

👉这是一个或许对你有用的开源项目

国产Star破10w的开源项目,前端包括管理后台、微信小程序,后端支持单体、微服务架构

RBAC权限、数据权限、SaaS多租户、商城、支付、工作流、大屏报表、ERP CRMAI大模型、IoT物联网等功能:

  • 多模块:https://gitee.com/zhijiantianya/ruoyi-vue-pro
  • 微服务:https://gitee.com/zhijiantianya/yudao-cloud
  • 视频教程:https://doc.iocoder.cn
【国内首批】支持 JDK17/21+SpringBoot3、JDK8/11+Spring Boot2双版本 

来源:blog.csdn.net/haohaizi_liu/article/details/151223658


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

场景设定

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

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

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

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/ruoyi-vue-pro
  • 视频教程:https://doc.iocoder.cn/video/

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

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

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

> 基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能
>
> * 项目地址://github.com/YunaiV/yudao-cloud>
> * 视频教程://doc.iocoder.cn/video/>

# 进入日志目录
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 放在项目根目录,团队共享。


欢迎加入我的知识星球,全面提升技术能力。

👉 加入方式,长按”或“扫描”下方二维码噢

星球的内容包括:项目实战、面试招聘、源码解析、学习路线。

文章有帮助的话,在看,转发吧。

谢谢支持哟 (*^__^*)

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/188459