问题
在某次因为SRE升级域名问题,导致了Node服务器代码死循环了,产生的504(Gateway timeout)错误。
登录到机器上看,正在用pm2查问题的原因中,突然发现错误从504变成的502。
也就是Node服务彻底挂掉了,准备用PM2重启服务,发现PM2无法启动。
执行任何PM2命令都提示以下信息:
$ pm2 list
[PM2] Spawning PM2 daemon with pm2_home=/home/sankuai/.pm2
现象
后经查,发现机器的磁盘空间被占满。猜测因为是Node服务因为死循环而日志把机器的磁盘给打满了,导致了PM2的守护进程无法启动。
$ df -hl
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 25G 24G 16M 100% /
tmpfs 937M 0 937M 0% /dev/shm
/dev/vdc1 99G 1.3G 93G 2% /opt
遂进入PM2的默认log日志目录,发现果然如此:
$ ll
total 20662092
-rw-rw-r-- 1 sankuai sankuai 20652240896 Jun 30 11:28 boot-error-0.log
-rw-rw-r-- 1 sankuai sankuai 505733120 Jun 30 11:28 boot-out-0.log
解决方案
删除日志文件:
$ rm boot-error-0.log
$ rm boot-out-0.log
再次查看磁盘空间:恢复正常
$ df -hl
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 25G 3.7G 20G 16% /
tmpfs 937M 0 937M 0% /dev/shm
/dev/vdc1 99G 1.3G 93G 2% /opt
再次启动PM2,PM2恢复正常:
$ pm2 list
┌──────────┬────┬──────┬──────┬────────┬─────────┬────────┬─────┬─────────────┬──────────┐
│ App name │ id │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ watching │
├──────────┼────┼──────┼──────┼────────┼─────────┼────────┼─────┼─────────────┼──────────┤
│ boot │ 0 │ fork │ 4014 │ online │ 0 │ 14m │ 0% │ 1001.9 MB │ disabled │
└──────────┴────┴──────┴──────┴────────┴─────────┴────────┴─────┴─────────────┴──────────┘
Use `pm2 show ` to get more details about an app