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

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 的应用层响应不一致。5Redis 验证进入 redis 容器执行 redis-cli -a redis ping 返回 PONG并看到 Redis 日志 Ready to accept connections。6MySQL 验证进入 mysql 容器执行 mysqladmin -uroot -p ping 返回 mysqld is alive。7Nacos 验证进入 nacos 容器访问 127.0.0.1:8848 被拒绝说明 Nacos 服务本身没有成功监听。8Nacos 日志取证从 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.pngWindows侧测试到192.168.101.68的Redis连接异常客户端提示服务端在返回完整响应前断开连接。图2 codex-clipboard-0098c9fe-a86e-4d00-ba46-c225deee8b7c.png在虚拟机内执行docker exec -it redis redis-cli -a redis pingRedis返回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.pngRedis日志显示Ready to accept connections进一步排除Redis作为本次故障根因。图5 codex-clipboard-e8b96d40-9e90-4e13-a08e-962f45263214.pngNacos日志截取显示容器启动过程在反复拉起Java进程但未形成可用服务。图6 codex-clipboard-a91ef6cf-01ee-4f14-ac21-1842d5379c72.pngMySQL容器日志显示entrypoint启动信息为后续单独验证MySQL状态提供线索。图7 codex-clipboard-cb7435d6-c8e6-499a-afc0-37401eb99b7f.pngNacos启动栈报错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.pngNacos容器内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.pngMySQL容器内执行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是真实生效配置源。