PM2:提升 Node.js 應用程式管理與性能的利器
在開發和部署 Node.js 應用程式時,如何高效地管理應用程式的啟動、監控、記錄以及處理高可用性等問題,一直是開發者面對的重要挑戰。
PM2 是一個功能強大且廣泛使用的 Node.js 應用程式管理工具,它能夠讓我們輕鬆解決這些問題,並提高應用程式的穩定性和性能。
什麼是 PM2?
PM2 是一個進程管理器,專門設計用來管理 Node.js 應用程式。它支持多進程運行、應用程式監控、記錄管理,並且提供了自動重啟、性能優化等功能。PM2 能夠幫助開發者更高效地運行和維護 Node.js 應用,特別是在生產環境中。
以下是加入你部落格文章的內容,已經整理過,並以條列方式呈現:
PM2 解決的問題
PM2 是一個 Node.js 進程管理器,能夠解決許多在開發與部署過程中常見的問題,特別是針對生產環境的需求。以下是 PM2 解決的一些問題與功能:
自動重啟服務
當 Node.js 服務崩潰時,PM2 能自動重啟服務,確保應用程序的高可用性。服務重啟後自動重啟 PM2 進程
當伺服器重啟時,PM2 會自動幫助我們重新啟動 Node.js 服務,確保應用在伺服器啟動後仍持續運行。利用多核心 CPU 的多進程支持
PM2 可以利用 CPU 的多個核心來啟動多個進程,達到負載平衡的效果,提升應用的效能。Graceful Reload (優雅重啟)
使用 PM2 的 Graceful Reload 功能,可以達成類似於 Rolling Upgrade 的效果,實現零停機時間的升級。多進程、多服務提高處理請求的速度
PM2 支持多進程運行,有助於提升處理大量請求的速度,提升系統的可擴展性。自動重啟排程設定
PM2 允許設定定時任務,根據預設的時間自動重啟服務,保證服務穩定運行。提供豐富的監控資訊
PM2 提供了各種監控資訊,包括已重啟次數、CPU 使用量、記憶體使用量、進程 ID 等,幫助管理者輕鬆掌握應用運行狀態。條件式重啟
PM2 可以根據自定義條件自動重啟服務,如基於「運行時間」或「記憶體使用量」等條件進行重啟,確保服務持續穩定。日志管理
PM2 提供強大的日誌管理功能,支持將日志按預設週期切割並保存,超過設定的數量時自動刪除舊的日志文件,幫助清理磁碟空間。簡單的部署方式
PM2 支持簡單的一次性部署,可以將應用同時部署到多台伺服器上,讓大規模的部署變得更加容易。與 CI/CD 工具結合
PM2 可以與 CI/CD 工具無縫整合,支持自動化的持續集成與持續部署,提升開發與運維效率。
PM2 的安裝
要開始使用 PM2,我們需要先進行安裝。使用 npm 可以輕鬆安裝 PM2:
1 | npm install pm2 -g |
安裝完成後,我們可以在命令行中使用 pm2
指令來管理應用程式。
使用 PM2 管理應用程式
啟動應用程式
假設我們有一個名為 app.js
的 Node.js 應用程式,我們可以使用 PM2 來啟動它:
1 | pm2 start app.js |
這會啟動 app.js
並將其置於後台運行。
查看運行中的應用程式
可以使用以下命令查看當前運行的所有應用程式:
1 | pm2 list |
這將顯示正在運行的應用程式及其狀態、CPU 使用率等資訊。
停止與重啟應用程式
若需要停止或重啟某個應用程式,可以使用以下命令:
1 | pm2 stop app_name |
這樣可以靈活地管理應用程式,並且在應用程式崩潰或需要重啟時迅速恢復。
查看應用程式日誌
PM2 也提供了日誌管理功能,能夠幫助開發者查看應用程式的輸出和錯誤日誌。使用以下指令即可查看日誌:
1 | pm2 logs |
多進程管理
Node.js 是單執行緒的,這意味著它在處理繁重的任務時可能會遇到性能瓶頸。PM2 提供了多進程管理功能,可以幫助我們充分利用多核處理器,提升應用程式的並行處理能力。
使用以下命令啟動應用程式並利用最大進程數:
1 | pm2 start app.js -i max |
-i max
參數告訴 PM2 啟動最大數量的進程,這樣就能夠更好地分配工作負載,提高性能。
永久運行應用程式
在生產環境中,我們通常希望應用程式在系統重啟後仍然能自動啟動。PM2 提供了自動啟動功能,可以讓我們在系統重啟後重新啟動應用程式。
首先,執行以下指令以生成啟動腳本:
1 | pm2 startup |
根據輸出的提示執行額外的設定指令,例如:
1 | sudo env PATH=$PATH:/usr/bin pm2 startup systemd -u <username> --hp /home/<username> |
接著,保存當前的應用程式配置:
1 | pm2 save |
這樣一來,PM2 就會在系統啟動時自動啟動並運行應用程式。
性能監控
PM2 還提供了監控工具,幫助開發者追蹤應用程式的 CPU 和記憶體使用情況。可以使用以下命令啟動監控模式:
1 | pm2 monit |
這樣會彈出一個即時監控面板,讓你清楚看到每個進程的狀況。
配置文件
PM2 支援使用 JSON 配置文件來設定應用程式的運行參數。配置文件可以包含多個應用程式的設置,並且能夠指定不同的環境變數和啟動參數。
範例配置文件(ecosystem.config.js
):
1 | { |
這樣,我們可以使用 pm2 start ecosystem.config.js
來啟動所有配置的應用程式。
這邊看起來給我感覺有點像 docker-compose
PM2 的進階應用
- 集群模式:PM2 支援集群模式,能夠讓你的應用程式在多個處理器核心上運行,以便提高性能和可擴展性。
- **日誌輪替 (Log Rotate)**:PM2 提供了日誌輪替功能,防止日誌檔案過大,導致磁碟空間不足。
常見問題與故障排除
- 應用程式崩潰:使用
pm2 logs
查看日誌,確定應用程式崩潰的原因。 - 應用程式無法啟動:檢查配置文件是否正確,並確保所需的環境變數已經設置。
結語
PM2 是一個強大的工具,能夠幫助我們有效地管理 Node.js 應用程式。在生產環境中,PM2 不僅能提高應用程式的可用性,還能夠提供監控、日誌管理等多種功能,讓開發者能夠專注於應用程式的開發而不必擔心運行和維護的問題。
如果你還沒有使用 PM2,現在就可以開始體驗這個強大的工具,讓你的 Node.js 應用程式更穩定、更高效。
希望這篇教學對你有所幫助!如果在設定過程中遇到問題,歡迎留言討論 😊