pm2
pm2 解決什麼問題?
-
pm2 可以讓 node 服務 crash 掉之後,自動幫我們重啟
-
pm2 可以在 server 重啟之後,自動幫我們重啟
-
pm2 可利用 CPU 多核,開啟多程序,已達到類似負載平衡的效果
- Graceful reload 可達成類似 rolling upgrade 的效果,0 downtime 升級
- 多程序多服務,可提升處理 request 的速度
- 可設定 cron 排程自動重啟時間
-
pm2 提供多項資訊,包含已重啟次數、 CPU 用量、 memory 用量, process id, 等等…
-
pm2 可以在指定的條件下,自動幫我們重啟,條件可以是’up time’, ‘已使用多少 memory’, 等等…,
-
pm2 可以幫我們整理 log, 讓 log 以我們想要的週期分割檔案,並保存我們想要的數量,若有超過,自動刪除。
-
pm2 提供簡單的部署方式,可一次性部署到多台 server
-
pm2 可與 CD / CD 工具做結合, CI / CD 部署也沒有問題
pm2的操作
安裝PM2
npm install pm2 -g
啟動服務
pm2 start app.js
pm2 start ecosystem.config.cjs
重啟服務
npm restart SERVICE_NAME
刪除Process
pm2 delete SERVICE_NAME
停止Process
pm2 stop SERVICE_NAME
設定記憶體使用超過多少後自動重啟伺服器
pm2 start app.js --max_memory_restart 1024M
監控服務
pm2 monit
監控 log
pm2 log
設定開機自動啟動 pm2
pm2 startup
儲存現在 pm2 的狀態
pm2 save
啟動可以附加的參數
--name指定 app 一個名字--watch檔案有變更時,會自動重新啟動--max-memory-restartMemory 使用超過這個門檻時,會自動重啟--log指定 log 的位址, 若要指定新位址,需將原本的 process 刪掉,再重新啟動指定--output指定 output log 位址--error指定 error log 位址--log-date-format指定 log 的格式--merge-logs同一個 app 跑多程序時,不要依據程序 id 去分割 log, 全部合在一起--arg1--arg2--arg3指派額外的參數--restart-delay自動重啟時,要 delay 多久--time給 log 加上前綴--no-autorestart不要自動重啟--cron指定 cron 規律,強制重啟--no-daemon無 daemon 模式, listen log 模式--spa限定 serve 使用, 會重導所有的請求到 index.html--basic-auth-username--basic-auth-password用於靜態檔, 讓該頁面需要帳號密碼方可存取
查看服務進程數
查看物理CPU个数
cat /proc/cpuinfo| grep "physical id" | sort| uniq | wc -l
查看每個物理CPU中的核數
cat /proc/cpuinfo| grep "cpu cores"| uniq
查看邏輯CPU的個數
cat /proc/cpuinfo| grep "processor"| wc -l
參考文章
https://ithelp.ithome.com.tw/articles/10223157
https://wayne265265.pixnet.net/blog/post/117947411-%E5%A5%BD%E7%94%A8%E7%9A%84process-manager%2C-pm2