pm2是一個帶有負載均衡功能的應用進程管理器,能夠用它來管理你的node進程,並查看node進程的狀態,固然也支持性能監控,進程守護等功能。他會肯定重啓開機以後,可以保證程序也能運行起來。目前尚未操做這部分,沒有過多介紹node
啓動npm
pm2 start app.jjson
添加進程/應用監視watch (監視)api
pm2 start app2.js --watchbash
上面圖片中watching欄,disabled變爲enabled服務器
列出全部進程app
pm2 list負載均衡
結束進程性能
pm2 stop appui
結束全部進程
pm2 stop all
刪除進程
pm2 delete app
刪除全部進程
pm2 delete all
查看某個進程狀況
pm2 describe app
查看全部進程資源消耗狀況
pm2 monit
重啓進程
pm2 restart app
重啓全部進程
pm2 restart all
pm2 restart 會殺死全部進程 從而reload
實現0秒的停機時間從新加載,要從新加載使用以下命令
pm2 reload <app_name>
pm2 reload process.json
查看進程日誌
pm2 logs app
查看全部進程日誌
pm2 logs
保存腳本
pm2 save
建立開機啓動腳本
pm2 startup systemd
更新pm2
確保正確保存了全部進程:
pm2 save
而後從NPM安裝最新的PM2版本:
npm install pm2 -g
最後更新內存中的PM2進程:
pm2 update
pm2配置文件
文件名 test.json 能夠經過 pm2 start test.json 快速啓動 app中每一項就是一個應用
{
"apps": [
{
"name": "coin1_6",
"cwd": "./",
"script": "coin1_6.js",
"log_date_format": "YYYY-MM-DD HH:mm Z",
"error_file": "/var/log/node-app/node-app.stderr.log",
"out_file": "log/node-app.stdout.log",
"pid_file": "pids/node-geo-api.pid",
"instances": "8",
"min_uptime": "60s",
"max_restarts": 10,
"max_memory_restart": "100M",
"cron_restart": "1 0 * * *",
"watch": true,
"merge_logs": true,
"exec_interpreter": "node",
"exec_mode": "cluster",
"autorestart": false,
"vizion": false
}
]
}
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://應用程序的腳本類型,默認是node
exec_mode://應用程序啓動模式,默認是fork
autorestart://啓用/禁用應用程序崩潰或退出時自動重啓
vizion://啓用/禁用vizion特性(版本控制)
本人使用的時候:
1.max_memory_restart在cluster狀態下小於平均的mem,服務器的cpu會佔的很高,
......
詳細可查看官網文檔:http://pm2.keymetrics.io/docs/usage/quick-start/