掌握生產環境中的 Node.js 使用 PM2 | 原創,AI翻譯
如果你曾經建立過一個 Node.js 應用程式並想知道如何在生產環境中保持其順暢運行,你可能會遇到 PM2。如果沒有,讓我介紹這個改變遊戲規則的工具。PM2,即 Process Manager 2,是一個開源工具,旨在使管理生產環境中的 Node.js 應用程式變得輕而易舉——內建負載均衡器、監控功能和零停機部署。讓我們深入了解 PM2 的優點以及為什麼它可能會成為你的首選工具。
什麼是 PM2?
PM2 的核心是一個 Node.js 應用程式的進程管理器。你可以把它想像成一個守護者,保持你的應用程式運行,如果它崩潰了,會自動重新啟動,並幫助你輕鬆擴展。最初由 Unitech 創建,現在由一個活躍的開源社區維護,PM2 以其在 GitHub 上的 45k 星(截至 2025 年初)和可靠性聲譽而聞名。
與在終端中運行 node app.js
並祈禱不同,PM2 控制你的應用程式的生命週期。這就像給你的 Node.js 應用程式配備了一個個人助理,處理那些無聊的事情——讓你可以專注於編碼。
為什麼 PM2 突出
這是重點:Node.js 本質上是單線程的,這對於輕量級、非阻塞 I/O 操作來說是很好的,但在高流量下可能會成為瓶頸。PM2 通過一些強大的功能來解決這個問題:
-
簡化進程管理 使用一個簡單的命令如
pm2 start app.js
,你的應用程式就會作為一個管理過的進程運行。如果它崩潰了(這是可能的),PM2 會自動重新啟動它。你可以使用簡單的命令如pm2 stop app
或pm2 delete app
來停止、重新啟動或刪除進程。不需要照顧。 -
內建負載均衡 這是 PM2 發揮作用的地方。使用其集群模式(
pm2 start app.js -i max
),PM2 會在你的 CPU 核心上啟動多個應用程式實例。然後它會在這些實例之間負載均衡傳入的請求。不需要單獨的工具如 Nginx 來分發流量——PM2 內建支持。 -
零停機重新加載 你是否曾經因為更新會將用戶踢出應用程式而害怕部署?PM2 使用
pm2 reload app
來解決這個問題。它會一個接一個地重新啟動你的應用程式進程,確保用戶不會中斷。順暢如蝴蝶。 -
監控和日誌 運行
pm2 monit
會給你一個 CPU 使用率、記憶體消耗和重新啟動的實時儀表板。需要深入研究錯誤嗎?pm2 logs
會將你的應用程式日誌直接流到你的終端。這就像為你的應用程式配備了一個控制塔。 -
啟動腳本 想要在伺服器重新啟動後自動啟動 PM2 嗎?只需運行
pm2 startup
,它會生成一個在啟動時重新啟動你的應用程式的腳本。幾分鐘內就可以準備好生產環境。
開始使用 PM2
準備好試試看嗎?設置非常簡單:
- 全局安裝 PM2
打開你的終端並運行:
npm install pm2 -g
這會全局安裝 PM2,讓你可以在任何地方使用它。
- 啟動你的應用程式
導航到你的項目文件夾並運行:
pm2 start app.js
你的應用程式現在由 PM2 管理。想要使用集群模式嗎?試試:
pm2 start app.js -i max
max
標誌告訴 PM2 使用所有可用的 CPU 核心。 -
檢查狀態 運行
pm2 list
以查看所有運行中的進程、它們的狀態和資源使用情況。 - 探索生態系統
PM2 不僅僅是一個單一功能的工具。它支持配置文件(例如
ecosystem.config.js
)用於更複雜的設置,與 Keymetrics 集成以進行高級監控,甚至可以與非 Node.js 應用程式一起使用,如果你想冒險。
適合誰?
PM2 適合任何在生產環境中運行 Node.js 的人——無論你是一個獨自開發者部署一個副項目,還是一個團隊成員管理一個高流量 API。它輕量級、直觀,不會讓你陷入過於複雜的設置步驟。小型初創公司和大型企業都對其推崇備至。
幾個專業技巧
- 觀察模式:在開發過程中使用
pm2 start app.js --watch
以在文件變更時自動重新啟動你的應用程式。 - 記憶體限制:使用
--max-memory-restart 200M
設置記憶體上限,以在應用程式變得過於饑渴時重新啟動它。 - 日誌清理:運行
pm2 flush
以清除舊日誌並保持整潔。
最後的想法
PM2 是那種一旦開始使用,你會想知道自己以前是如何生活的工具。它將管理 Node.js 進程的混亂轉變為一個流暢、無壓力的體驗。無論你是擴展微服務、保持網頁應用程式運行,還是只是玩弄一個愛好項目,PM2 都會支持你。
所以,前往 PM2 的 GitHub 頁面,給它一個星並試試看。你的 Node.js 應用程式會感謝你——你的心情也會。