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

2026-06-30 后端启动异常排查记录

记录对象:jzo2o本地开发环境/ VMware CentOS7-101.68 / Docker中间件

一、问题概述

2026-06-30 反馈:前一天后端仍可正常启动,当天由于虚拟机需要重新登录并重新启动容器,之后后端无法启动。本次排查覆盖 Windows 宿主机、IntelliJ 运行状态、VMware 虚拟机、Docker 容器、Nacos / Redis / MySQL 健康状态以及 Nacos 配置来源。

二、最终结论

  • 本次后端启动失败不是 Java 代码改动导致,而是虚拟机中间件环境异常导致。
  • Redis 已被排除:容器内 `redis-cli -a redis ping` 返回 `PONG`,日志显示 `Ready to accept connections`。
  • MySQL 已基本被排除:容器内 `mysqladmin -uroot -p ping` 返回 `mysqld is alive`。
  • 真正的直接故障点是 Nacos:容器内访问 `127.0.0.1:8848` 被拒绝,日志明确报错 `No DataSource set`,说明 Nacos 数据源初始化失败,服务没有真正启动成功。
  • 由于所有后端服务依赖 Nacos 进行配置获取与服务注册,Nacos 未启动成功会直接导致本地后端全部无法正常拉起。

三、原因归纳

通过 `docker inspect nacos` 确认,当前 Nacos 使用虚拟机中的挂载文件 `/data/soft/nacos/conf/application.properties` 作为真实配置源;同时容器内不存在有效的 `custom.properties` 补充配置,也没有注入 `MYSQL_SERVICE_*` 环境变量。在此状态下,Nacos 启动阶段出现 `No DataSource set`,表明其数据库连接配置在运行时未被正确初始化,从而导致 8848 端口未监听成功。

四、排查过程纪要

序号

阶段

执行结果/结论

1

用户描述现象

用户说明 2026-06-29 后端仍可启动,2026-06-30 虚拟机重新登录并重启容器后,后端无法启动。

2

宿主机初查

从 Windows 侧看到 Redis 客户端提示 `Can not read response from server`,初步怀疑中间件环境异常。

3

项目侧复现

检查 IDEA 运行状态与 Spring Boot 模块后,确认问题集中在依赖的基础环境,而不是纯编译错误。

4

虚拟机容器状态检查

在 VMware 中看到 Redis、Nacos、MySQL 等容器均处于 `Up` 状态,但宿主机访问 8848/3306/6379 的应用层响应不一致。

5

Redis 验证

进入 redis 容器执行 `redis-cli -a redis ping` 返回 `PONG`,并看到 Redis 日志 `Ready to accept connections`。

6

MySQL 验证

进入 mysql 容器执行 `mysqladmin -uroot -p ping` 返回 `mysqld is alive`。

7

Nacos 验证

进入 nacos 容器访问 `127.0.0.1:8848` 被拒绝,说明 Nacos 服务本身没有成功监听。

8

Nacos 日志取证

从 Nacos 日志中定位到 `No DataSource set` 与 `dumpservice bean construction failure` 异常。

9

配置来源定位

通过 `docker inspect nacos` 确认真实配置来自挂载文件 `/data/soft/nacos/conf/application.properties`。

10

环境变量与补充配置检查

确认 nacos 容器未注入 `MYSQL_SERVICE_*` 环境变量,且 `custom.properties` 不存在、`init.d/custom.properties` 仅有注释。

11

最终归因

确定本次后端启动失败的直接原因是 Nacos 数据源初始化失败,导致 Nacos 无法提供配置中心/注册中心能力。

五、关键证据摘录

  • 宿主机初始症状:访问 192.168.101.68 时 Redis/ Nacos / MySQL 的应用层响应异常,说明问题集中在虚拟机环境,而非 IDE 本身。
  • Redis 证据:Redis 容器内 `PONG` + `Ready to accept connections`,可确认 Redis 正常。
  • MySQL 证据:MySQL 容器内 `mysqld is alive`,说明数据库主进程正常存活。
  • Nacos 证据:容器内 curl 8848 被拒绝;日志报 `Nacos Server did not start because dumpservice bean construction failure : No DataSource set`。
  • 配置来源证据:`docker inspect nacos` 显示 `/data/soft/nacos/conf/application.properties` 挂载到 `/home/nacos/conf/application.properties`,这是本次运行的实际配置来源。
  • 配置补充缺失证据:`MYSQL_SERVICE_*` 环境变量无输出,`/home/nacos/conf/custom.properties` 不存在,`/home/nacos/init.d/custom.properties` 仅有注释。

六、建议处理方式

  • 若目标是最快恢复开发环境,重新导入此前可正常启动的原始虚拟机文件是最稳妥的办法。
  • 如继续在当前虚拟机修复,应优先恢复 Nacos 的可用数据源配置,并保证其在容器重启后仍能稳定注入。
  • 在后续恢复后,建议先按顺序验证 `docker ps`、Nacos 8848、Redis `PONG`、MySQL `mysqld is alive`,再启动后端服务。

附录:提供的截图证据

以下截图按今天的排查时间线顺序附上,作为本次定位过程中的原始证据留存。

1 codex-clipboard-ce03fdb7-3c42-487b-b40e-af71bc4d31ae.png

Windows侧测试到192.168.101.68Redis连接异常,客户端提示服务端在返回完整响应前断开连接。

2 codex-clipboard-0098c9fe-a86e-4d00-ba46-c225deee8b7c.png

在虚拟机内执行`docker exec -it redis redis-cli -a redis ping`Redis返回`PONG`,确认Redis容器本身可用。

3 codex-clipboard-168f0209-df5e-4d2f-ae12-55131717b53e.png

nacos容器内访问`127.0.0.1:8848`被拒绝,说明Nacos服务未成功监听8848端口。

4 codex-clipboard-ce991ad3-4b2d-4400-96f2-ca67ac08e305.png

Redis日志显示`Ready to accept connections`,进一步排除Redis作为本次故障根因。

5 codex-clipboard-e8b96d40-9e90-4e13-a08e-962f45263214.png

Nacos日志截取,显示容器启动过程在反复拉起Java进程但未形成可用服务。

6 codex-clipboard-a91ef6cf-01ee-4f14-ac21-1842d5379c72.png

MySQL容器日志显示entrypoint启动信息,为后续单独验证MySQL状态提供线索。

7 codex-clipboard-cb7435d6-c8e6-499a-afc0-37401eb99b7f.png

Nacos启动栈报错:`Nacos Server did not start because dumpservice bean construction failure : No DataSource set`

8 codex-clipboard-7d2ad3a4-1a1d-443a-9444-17271092d2de.png

同一异常截图的补充部分,再次确认Nacos失败点在数据源初始化,而非Redis或后端代码编译。

9 codex-clipboard-292dbe3c-7ec2-4e0e-bd19-8134597dc491.png

Nacos容器内`ps -ef`可见Java进程仍存在,说明容器是`Up`状态,但应用没有健康启动完成。

10 codex-clipboard-adfb2a63-e347-4dc9-b0f4-799343af39a0.png

nacos容器内尝试用`ss -lntp | grep 8848`检查监听时,由于命令输入有误未得到有效结果。

11 codex-clipboard-31934948-3133-4379-8efb-2698f4a9493d.png

MySQL容器内执行`mysqladmin -uroot -p ping`返回`mysqld is alive`,确认MySQL服务本身可用。

12 codex-clipboard-c4f744eb-0ffe-43b1-9147-7a6ac38e0809.png

查看nacos容器`/home/nacos/conf`,只有`application.properties`、日志配置和SQL脚本,没有单独的`custom.properties`

13 codex-clipboard-fb179e35-0e2f-480e-8d8d-2496e54e0208.png

容器内`application.properties`显示Nacos数据源依赖MySQL配置项,包含`db.url.0``db.user``db.password`等字段。

14 codex-clipboard-d9222f29-f665-4d87-a68c-50c02148dce4.png

确认`/home/nacos/conf/custom.properties`不存在,排除了通过该文件补充数据源配置的可能。

15 codex-clipboard-f5a06727-7dcc-4ec1-ab65-f1b25fdaeac2.png

查看`/home/nacos/init.d/custom.properties`,内容均为注释,未提供实际MySQL数据源参数。

16 codex-clipboard-095df110-d6f1-439c-b9f7-00fdadb4bedd.png

执行`docker exec -it nacos env | grep MYSQL_SERVICE"`时,由于误加引号,shell进入补全状态,提示后续命令需要重输。

17 codex-clipboard-bd1c762a-7508-44c3-bd3f-30bd714a06a0.png

重新执行环境变量检查后,`MYSQL_SERVICE_*`无任何输出,说明nacos容器未注入这组环境变量。

18 codex-clipboard-d169bb3c-53c7-4780-8ea6-b5a223eb209c.png

进一步查看挂载到主机路径后的`application.properties`内容,确认当前运行时使用的就是该文件中的Nacos/MySQL配置。

19 codex-clipboard-4ab61418-3d31-4ab6-b4d7-5f31d5310ffc.png

通过`docker inspect nacos`确认nacos容器镜像、启动参数和挂载关系:`/data/soft/nacos/conf/application.properties`是真实生效配置源。

http://www.jsqmd.com/news/1099747/

相关文章:

  • Java毕设项目:基于 SpringBoot 的电竞周边用品交易管理系统的设计与实现 基于 SpringBoot 的小众游戏周边购物服务系统 (源码+文档,讲解、调试运行,定制等)
  • 基于FFmpeg的直播视频录制工具StreamCap
  • 【毕业设计】基于 SpringBoot 的高校学生心理预警干预系统的设计与实现 基于 SpringBoot 的大学生心理状态跟踪管理系统(源码+文档+远程调试,全bao定制等)
  • 企业做GEO内容发布,哪些做法容易出风险?
  • CPT Markets:把多语言支持做扎实,注重效率的使用者更容易感受到的框架
  • Vol.57|接新IM渠道还要改代码?现在填几个字段就行
  • 无人机视角航拍违建违章建筑识别数据集labelme格式245张2类别
  • CAD 图纸批量处理:用 OpenClaw 实现图纸格式转换、批量打印、版本号自动标注
  • Spring Cloud分布式事务快速上手(基于Seata AT模式,集成Nacos)--学习版
  • Manim 节奏控制指南 (Rate Functions)
  • Java计算机毕设之基于 SpringBoot 的学生心理咨询预约管理系统的设计与实现 基于 SpringBoot 的高校心理健康信息管理系统(完整前后端代码+说明文档+LW,调试定制等)
  • 按照这个方法真的领到了8元,千问新用户专属220372
  • YOLO-World实战:零样本目标检测,一句话实现开放词汇检测
  • AI 建议用 Redis `SETNX` 防重复提交,为什么锁过期后仍可能创建两条记录
  • CPT Markets:把外汇投教内容建设做到位——标准观察与提示整理
  • 6G网络中大模型技术与多模态感知通信的融合应用
  • Java毕业设计-基于 SpringBoot 的农机 4S 店综合管理系统的设计与实现 基于 SpringBoot 的农作物机械管理系统的设计与实源码+LW+部署文档+全bao+远程调试+代码讲解等)
  • 数值优化方法:信任域与无导数技术详解
  • 注解的基本语法
  • FreeRTOS学习笔记(二)
  • [对比学习LangChain和MAF-16]基于Checkpoint的持久化
  • C中单向链表之增删改查
  • 导入Seata-server所需SQL
  • 四川大学《微积分I-1》期末试卷及答案2016-2025学年PDF
  • OpenHarness源码研究-5-基础设施
  • 什么是配置中心?有哪些常见的配置中心?
  • 【车载 AOSP 16 蓝牙(bluedroid)服务】【qcom 平台双蓝牙】【13.耳机如何协商采样率:从 AVDTP 到 AAC 44100 的一条路】
  • 第六周学习报告
  • 我做了一个基于心理测评和场景记忆的 AI 伴侣产品 CandyAI
  • 爆品之后:新消费品牌如何用数字化穿越增长瓶颈?