2026-09-25
技术
0

目录

服务器重启后,PM2 把旧版本项目"复活"了 —— 踩坑记录与避坑指南
现象
原因
解决与预防

服务器重启后,PM2 把旧版本项目"复活"了 —— 踩坑记录与避坑指南

现象

服务器重启后,网站看起来一切正常,但实际上运行的是之前的旧版本项目:导致我的数据全部写进了旧数据库。由于没有任何报错,好几天才发现。

原因

PM2 的进程列表平时只存在守护进程内存里,服务器重启后靠 resurrect(复活)机制恢复,恢复依据是磁盘上的快照文件 ~/.pm2/dump.pm2,而这个快照只在手动执行 pm2 save 时才会更新。

坑点就在这里:

  • pm2 start / restart / reload / delete 都不会自动更新快照;
  • 服务器重启(或 pm2 守护进程崩溃重启)时,resurrect 按快照恢复——快照是旧的,就会把早已停用的旧条目原样拉起来。

典型踩坑场景:项目重构后换了新目录部署,pm2 stop 旧进程、pm2 start 新进程,一切正常,唯独忘了 pm2 save。之后服务器一旦重启,旧项目复活、新项目消失——对 PM2 来说一切"符合预期",所以没有任何告警。

解决与预防

  1. 每次对 pm2 进程做增、删、改之后,执行 pm2 save!!!!;
  2. 服务器发生重启后一定要警惕!!!,重启后检查运行的各服务是否有异动!!!

本文作者:yan7

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!