起因
開發反饋測試環境某 node 進程使用 pm2 log 查看日志提示端口沖突,pm2 restart 重啟進程問題依舊,但該服務可正常訪問。
處理過程:
訪問該服務 URL 業務正常,查看 Nginx access.log ,狀態碼為 200,即后端無異常。
pm2 log xx,查看該服務並未刷新日志。
pm2 restart ,無用。
懷疑該進程已 hang,決定殺進程重啟。
lsof -i:port
kill -9 pid
查看殺進程是否成功,再次使用 lsof -i:port ,發現進程還在!只是換了個pid。
重復 lsof -i:port ,kill -9 pid 多次,進程都會自動啟動,只是換了個pid。
kill 掉 pm2,該進程終於沒了。恢復 pm2 該進程再次出現。
kill -9 殺進程,又回到前面該進程自動重啟的狀態。
由於是測試環境,我將該項目文件夾移動到其他文件夾,kill 進程后,發現進程未重啟。
pm2 list查看,終於發現問題。
開發將該服務加入 pm2 list時,使用了不一致的上下文。
如原來為xx的上下文,加入pm2 管理時,開發設置成了yy。我一直去查xx上下文,當然查不出問題。