摘要:一是什么是可以用于生產環(huán)境的的進程管理工具,并且它內置一個負載均衡。嗯嗯,最好的用處就是監(jiān)控我們的生產環(huán)境下的程序運行狀態(tài),讓它給我們日以繼日的處于工作狀態(tài)。部署自動部署,避免逐個在所有服務器中進行。
一、PM2是什么
是可以用于生產環(huán)境的Nodejs的進程管理工具,并且它內置一個負載均衡。它不僅可以保證服務不會中斷一直在線,并且提供0秒reload功能,還有其他一系列進程管理、監(jiān)控功能。并且使用起來非常簡單。
嗯嗯,最好的用處就是監(jiān)控我們的生產環(huán)境下的node程序運行狀態(tài),讓它給我們日以繼日的處于工作狀態(tài)。
pm2官方文檔
二、為森么要使用pm2
原始社會的我們開發(fā)node服務端程序一般過程:
編寫好node程序app.js,運行node app.js;或者寫入script使用npm運行;打開瀏覽器訪問;
好像需要修改內容,瀏覽器對修改的內容沒有顯示出來?->node app.js->再次運行;
瀏覽器忽然訪問不到服務,好像出錯啦?重啟下->node app.js->再次運行;
哎呀開了好多控制臺窗口,一不小心關閉了,服務又訪問不到了,繼續(xù)打開控制臺->node app.js->再次運行;
好崩潰!好像有個工具nodemon;安裝使用nodemon app.js;哇,可以自動監(jiān)聽文件修改變化自動重啟,但是關閉控制臺服務還是會被摧毀。
通過這個很常用的場景,我們了解到要避免這些麻煩一個服務器至少需要有:后臺運行和自動重啟,這兩個能力。
再來看看使用pm2可擁有的能力:
日志管理;兩種日志,pm2系統(tǒng)日志與管理的進程日志,默認會把進程的控制臺輸出記錄到日志中;
負載均衡:PM2可以通過創(chuàng)建共享同一服務器端口的多個子進程來擴展您的應用程序。這樣做還允許以零秒停機時間重新啟動應用程序。
終端監(jiān)控:可以在終端中監(jiān)控應用程序并檢查應用程序運行狀況(CPU使用率,使用的內存,請求/分鐘等)。
SSH部署:自動部署,避免逐個在所有服務器中進行ssh。
靜態(tài)服務:支持靜態(tài)服務器功能
支持開發(fā)調試模式,非后臺運行,pm2-dev start
。。。。。太過強大!
pm2常用命令
啟動服務pm2 start