使用PM2守護Node.js應用

PM2簡介

PM2是node進程管理工具,能夠利用它來簡化不少node應用管理的繁瑣任務,如性能監控、自動重啓、負載均衡等,並且使用很是簡單。 node

 

安裝PM2

$ npm install pm2 -g shell

 

啓動Node應用

# 啓動app.js應用程序 npm

$ pm2 start app.js json

 

# cluster mode 模式啓動4個app.js的應用實例, 4個應用程序會自動進行負載均衡 api

$ pm2 start app.js -i 4 數組

 

# 啓動應用程序並命名爲 "api" bash

$ pm2 start app.js --name="api" app

 

# 當文件變化時自動重啓應用 負載均衡

$ pm2 start app.js --watch 工具

 

# 啓動 bash 腳本

$ pm2 start script.sh

 

查看Node應用

# 列表 PM2 啓動的全部的應用程序

$ pm2 list

 

# 顯示每一個應用程序的CPU和內存佔用狀況

$ pm2 monit

 

# 顯示應用程序的全部信息

$ pm2 show [app-name]

 

# 顯示全部應用程序的日誌

$ pm2 logs

 

# 顯示指定應用程序的日誌

$ pm2 logs [app-name]

 

中止/重啓Node應用

# 中止全部的應用程序

$ pm2 stop all

 

# 中止 id爲 0的指定應用程序

$ pm2 stop 0

 

# 重啓全部應用

$ pm2 restart all     

 

# 重啓 cluster mode下的全部應用

$ pm2 reload all

 

# Graceful reload all apps in cluster mode

$ pm2 gracefulReload all

 

# 關閉並刪除全部應用

$ pm2 delete all

 

# 刪除指定應用 id 0

$ pm2 delete 0

 

# 把名字叫api的應用擴展到10個實例

$ pm2 scale api 10

 

# 重置重啓數量

$ pm2 reset [app-name]

 

使用啓動配置文件

#啓動配置文件

$ pm2 start apps.json

範例文件:

{

"apps": [{

"name": "bob_test",

"cwd": "D:\\Practices\\Node\\PM2Demo",

"script": "app.js",

"log_date_format": "YYYY-MM-DD HH:mm Z",

"error_file": "node-app.stderr.log",

"out_file": "node-app.stdout.log",

"pid_file": "node-geo-api.pid",

"instances": 6,

"min_uptime": "200s",

"max_restarts": 10,

"max_memory_restart": "1M",

"cron_restart": "1 0 * * *",

"watch": false,

"merge_logs": true,

"exec_interpreter": "node",

"exec_mode": "fork",

"autorestart": false,

"vizion": false

}]

}

說明:

  • apps:json結構,apps是一個數組,每個數組成員就是對應一個pm2中運行的應用
  • name:應用程序名稱
  • cwd:應用程序所在的目錄
  • script:應用程序的腳本路徑
  • log_date_format:
  • error_file:自定義應用程序的錯誤日誌文件
  • out_file:自定義應用程序日誌文件
  • pid_file:自定義應用程序的pid文件
  • instances:
  • min_uptime:最小運行時間,這裏設置的是60s即若是應用程序在60s內退出,pm2會認爲程序異常退出,此時觸發重啓max_restarts設置數量
  • max_restarts:設置應用程序異常退出重啓的次數,默認15次(從0開始計數)
  • cron_restart:定時啓動,解決重啓能解決的問題
  • watch:是否啓用監控模式,默認是false。若是設置成true,當應用程序變更時,pm2會自動重載。這裏也能夠設置你要監控的文件。
  • merge_logs:
  • exec_interpreter:應用程序的腳本類型,這裏使用的shell,默認是nodejs
  • exec_mode:應用程序啓動模式,這裏設置的是cluster_mode(集羣),默認是fork
  • autorestart:啓用/禁用應用程序崩潰或退出時自動重啓
  • vizion:啓用/禁用vizion特性(版本控制)
相關文章
相關標籤/搜索