一、背景
今年 4 月使用 Node 重构了几个 PHP 接口,并使用 PM2 跑在了服务器上,经历了几个迭代以后服务器 CPU 一直 100%,报错日志一直增加,但是由于接口正常运行加上工作比较忙就没管。
二、原因
最近查看了日志,最频繁的报错是:Error: Cannot find module '/xx/app.js'
,但是查找了代码,并没有引入这个模块,但是曾经使用了 /xx/app.js
作为入口文件,后期才迁移到 /xx/xx/app.js
,于是查看 PM2 的自启动配置 dump.pm2
,果然存在 /xx/app.js
的入口配置,应该是早期配置完成后并没有删除。
三、解决方案
停止 Node 服务:
pm2 stop all
查看 PM2 启动的所有的应用程序:
pm2 list
删除所有应用:
pm2 delete all # or 删除有问题的应用 pm2 delete 0 pm2 delete 1 pm2 delete 2
启动正确路径的应用:
pm2 start /xx/xx/app.js
保存当前运行情况到自启动配置:
pm2 save
清空日志文件:
cd /root/.pm2 rm -rf logs/* rm -rf pm2.log touch pm2.log