pm2 是一個帶有負載均衡功能的Node應用的進程管理器颗圣。
當你要把你的獨立代碼利用全部的服務器上的所有CPU喳钟,并保證進程永遠都活著,0秒的重載在岂, PM2是完美的奔则。
它非常適合IaaS結構,但不要把它用于PaaS方案蔽午。
備注:SaaS易茬、PaaS和IaaS是云服務模式。
SaaS 軟件即服務,例如Google的 Gmail 郵箱服務.面向應用型用戶
PaaS 平臺即服務.例如Google的GAE,面向開發(fā)型用戶
IaaS 基礎架構即服務,例如亞馬遜的AWS抽莱,IaaS對于不知道新推出的應用程序/網(wǎng)站會有多成功的創(chuàng)業(yè)公司來說非常有用
主要特性:
內建負載均衡(使用Node cluster 集群模塊)
后臺運行
0秒停機重載范抓,我理解大概意思是維護升級的時候不需要停機.
具有Ubuntu和CentOS 的啟動腳本
停止不穩(wěn)定的進程(避免無限循環(huán))
控制臺檢測
提供 HTTP API
遠程控制和實時的接口API ( Nodejs 模塊,允許和PM2進程管理器交互 )
測試過Nodejs v0.11 v0.10 v0.8版本,兼容CoffeeScript,基于Linux 和MacOS.
安裝
npm install -g pm2
用法
npm install pm2 -g # 命令行安裝 pm2
pm2 start app.js -i 4 #后臺運行pm2食铐,啟動4個app.js
# 也可以把'max' 參數(shù)傳遞給 start
# 正確的進程數(shù)目依賴于Cpu的核心數(shù)目
pm2 start app.js --name my-api # 命名進程
pm2 list # 顯示所有進程狀態(tài)
pm2 monit # 監(jiān)視所有進程
pm2 logs # 顯示所有進程日志
pm2 stop all # 停止所有進程
pm2 restart all # 重啟所有進程
pm2 reload all # 0秒停機重載進程 (用于 NETWORKED 進程)
pm2 stop 0 # 停止指定的進程
pm2 restart 0 # 重啟指定的進程
pm2 startup # 產(chǎn)生 init 腳本 保持進程活著
pm2 web # 運行健壯的 computer API endpoint
pm2 delete 0 # 殺死指定的進程
pm2 delete all # 殺死全部進程
運行進程的不同方式:
pm2 start app.js -i max # 根據(jù)有效CPU數(shù)目啟動最大進程數(shù)目
pm2 start app.js -i 3 # 啟動3個進程
pm2 start app.js -x #用fork模式啟動 app.js 而不是使用 cluster
pm2 start app.js -x -- -a 23 # 用fork模式啟動 app.js 并且傳遞參數(shù) (-a 23)
pm2 start app.js --name serverone # 啟動一個進程并把它命名為 serverone
pm2 stop serverone # 停止 serverone 進程
pm2 start app.json # 啟動進程, 在 app.json里設置選項
pm2 start app.js -i max -- -a 23 #在--之后給 app.js 傳遞參數(shù)
pm2 start app.js -i max -e err.log -o out.log # 啟動 并 生成一個配置文件
你也可以執(zhí)行用其他語言編寫的app ( fork 模式):
pm2 start my-bash-script.sh -x --interpreter bash
pm2 start my-python-script.py -x --interpreter python
0秒停機重載:
這項功能允許你重新載入代碼而不用失去請求連接匕垫。
注意:
僅能用于web應用
運行于Node 0.11.x版本
運行于 cluster 模式(默認模式)
pm2 reload all
CoffeeScript:
pm2 start my_app.coffee #這就是全部
pm2 list
列出由pm2管理的所有進程信息,還會顯示一個進程會被啟動多少次虐呻,因為沒處理的異常象泵。
pm2 monit
監(jiān)視每個node進程的CPU和內存的使用情況。