Open mangreen opened 9 years ago
http://abaotsai.com/wordpress/index.php/2016/07/12/%E4%BD%BF%E7%94%A8pm2%E7%AE%A1%E7%90%86node-js/
forever 與 PM2 的差異
Feature | Forever | PM2 |
---|---|---|
Keep Alive | ✔ | ✔ |
Coffeescript | ✔ | |
Log aggregation | ✔ | |
API | ✔ | |
Terminal monitoring | ✔ | |
Clustering | ✔ | |
JSON configuration | ✔ |
那當然是用PM2好啦!!立刻來安裝。
$ npm install -g pm2
$ pm2 start budo.js -i 0
預設是用folk跑程式,使用-i 會變成用cluster跑,後面的數字代表要跑幾個CPU核,0代表max,結果會如下圖
$ pm2start
如想要再次顯示像上圖的內容可以打這個指令
$ pm2 list
$ pm2 monit
在MAC使用Homebrew安裝
$ brew install wrk
接著執行wrk來測試
$ wrk -c 100 -d 100 http://localhost:9005
結果如下
$ wrktest
電腦想重新開啟(hard restart)後,如何再重複執行這些task呢?
$ pm2 dump //儲存dump
$ pm2 kill //停止所有process
$ pm2 resurect //復活所有process
建立一個process,它會回吐完整機器所有狀態,可用其他裝置來瀏覽此API頁面,達到監控的效果,成功建立後網址為http://localhost:9615
$ pm2 web
$ pm2 logs //顯示日誌
$ pm2 stop all //停止所有process
$ pm2 restart all //重新啟動所有process
$ pm2 reload all //0秒停機重啟(用在Network process)
$ pm2 stop 0 //停止指定的process
$ pm2 restart 0 //重啟指定的process
$ pm2 delete 0 //刪除指定的process
$ pm2 delete all //刪除所有的process
$ pm2 start -i max //根據有效CPU核心數量,啟動最大process數目
$ pm2 start app.js -i 3 //啟動3個 process
$ pm2 start app.js -x //使用fork模式啟動 app.js 而不是用 cluster
$ pm2 start app.js -x -- -a 23 //用fork模式啟動,並且在--之後傳入參數 (-a 23)
$ pm2 start app.js --name serverone //啟動app.js 並且命名為serverone
$ pm2 stop serverone //停止 serverone
$ pm2 start app.json //啟動process 在 app.json裡設置選項
$ pm2 start app.js -i max -e err.log -o out.log //啟動 並且生成配置檔
可用其他語言編譯(fork mode)
$ pm2 start my-bash-script.sh -x --interpreter bash
$ pm2 start my-python-script.py -x --interpreter python
http://pm2.keymetrics.io/docs/usage/startup/
把需要pm2运行的node命令都运行一遍,例如:
然后,让pm2 dump这些进程列表
然后,让pm2生成一个自动运行的脚本
这行命令会在 /etc/init.d/ 生成一个 pm2-init.sh脚本,运行两条shell命令,让它成为服务:
重启机器,你会发现上一次执行的pm2进程,都自己恢复了。
原理是什么呢?可以看下/etc/init.d/pm2-init.sh: