文章目錄
- **PM2 完全指南:Node.js 應用后臺啟動、關閉與重啟詳解**
- **1. 什么是 PM2?**
- **2. 安裝 PM2**
- **全局安裝**
- **驗證安裝**
- **3. 使用 PM2 啟動 Node.js 應用**
- **基本啟動**
- **指定應用名稱**
- **集群模式(多進程負載均衡)**
- **監聽文件變化自動重啟(開發模式)**
- **4. 查看運行中的應用**
- **列出所有應用**
- **查看應用詳情**
- **5. 關閉/停止 Node.js 應用**
- **停止單個應用**
- **停止所有應用**
- **刪除應用(從 PM2 列表移除)**
- **6. 重啟 Node.js 應用**
- **普通重啟**
- **零停機重啟(優雅重載)**
- **重啟所有應用**
- **7. 日志管理**
- **查看實時日志**
- **查看最近 100 行日志**
- **清空日志**
- **8. 監控應用性能**
- **實時監控 CPU/內存**
- **生成性能報告**
- **9. 開機自啟動**
- **保存當前 PM2 應用列表**
- **設置開機自啟動**
- **取消開機自啟動**
- **10. 高級用法**
- **環境變量管理**
- **最大內存限制**
- **11. 常見問題**
- **Q1: PM2 啟動后應用仍然退出?**
- **Q2: 如何更新 PM2?**
- **Q3: PM2 占用 CPU 過高怎么辦?**
- **12. 總結**
PM2 完全指南:Node.js 應用后臺啟動、關閉與重啟詳解
1. 什么是 PM2?
PM2 是 Node.js 最流行的進程管理工具之一,它可以幫助開發者:
- 后臺運行 Node.js 應用(即使關閉終端也不會停止)
- 自動重啟 崩潰的應用
- 負載均衡(多進程模式)
- 日志管理
- 監控性能(CPU、內存)
- 開機自啟動
適用于生產環境部署,極大提升 Node.js 應用的穩定性和可維護性。
2. 安裝 PM2
全局安裝
管理員cmd窗口運行
npm install pm2 -g
安裝windows自啟動包
npm install pm2-windows-startup -g
執行命令
pm2-startup install
查看是否安裝成功
pm2 -v
如果安裝失敗(權限問題):
sudo npm install -g pm2 # Linux/macOS
npm install -g pm2 --unsafe-perm # 繞過權限限制
驗證安裝
pm2 --version
# 輸出示例:5.2.2
3. 使用 PM2 啟動 Node.js 應用
基本啟動
pm2 start app.js
- 默認會在后臺運行
- 應用名稱默認為
app
(不帶.js
)
指定應用名稱
pm2 start app.js --name "my-api"
集群模式(多進程負載均衡)
pm2 start app.js -i 4 # 啟動 4 個實例(根據 CPU 核心數優化)
監聽文件變化自動重啟(開發模式)
pm2 start app.js --watch
4. 查看運行中的應用
列出所有應用
pm2 list
# 或
pm2 ls
輸出示例:
┌─────┬───────────┬─────────────┬─────────┬─────────┬──────┬───────────┐
│ id │ name │ namespace │ version │ mode │ pid │ uptime │
├─────┼───────────┼─────────────┼─────────┼─────────┼──────┼───────────┤
│ 0 │ my-api │ default │ 1.0.0 │ fork │ 1234 │ 2D │
└─────┴───────────┴─────────────┴─────────┴─────────┴──────┴───────────┘
- id:進程的唯一標識符
- name:應用名稱
- pid:進程 ID
- uptime:運行時間
查看應用詳情
pm2 show my-api
5. 關閉/停止 Node.js 應用
停止單個應用
pm2 stop my-api
# 或通過 id 停止
pm2 stop 0
停止所有應用
pm2 stop all
刪除應用(從 PM2 列表移除)
pm2 delete my-api
# 或
pm2 delete 0
6. 重啟 Node.js 應用
普通重啟
pm2 restart my-api
零停機重啟(優雅重載)
適用于生產環境,避免請求中斷:
pm2 reload my-api
重啟所有應用
pm2 restart all
7. 日志管理
查看實時日志
pm2 logs my-api
查看最近 100 行日志
pm2 logs --lines 100
清空日志
pm2 flush
8. 監控應用性能
實時監控 CPU/內存
pm2 monit
會打開一個交互式面板,顯示各進程的資源占用情況。
生成性能報告
pm2 report
9. 開機自啟動
保存當前 PM2 應用列表
pm2 save
設置開機自啟動
pm2 startup
然后按照提示執行生成的命令(如 systemd、init.d 等)。
取消開機自啟動
pm2 unstartup
10. 高級用法
環境變量管理
pm2 start app.js --env production
并在項目根目錄創建 ecosystem.config.js
:
module.exports = {apps: [{name: "my-api",script: "app.js",env: {NODE_ENV: "development",},env_production: {NODE_ENV: "production",}}]
};
然后啟動:
pm2 start ecosystem.config.js --env production
最大內存限制
pm2 start app.js --max-memory-restart 512M
當內存超過 512MB 時自動重啟。
11. 常見問題
Q1: PM2 啟動后應用仍然退出?
可能是代碼錯誤,查看日志:
pm2 logs my-api
Q2: 如何更新 PM2?
npm install -g pm2@latest
pm2 update
Q3: PM2 占用 CPU 過高怎么辦?
檢查是否有內存泄漏,或限制 CPU:
pm2 start app.js --max-memory-restart 1G
12. 總結
操作 | 命令 |
---|---|
啟動應用 | pm2 start app.js --name my-api |
停止應用 | pm2 stop my-api |
重啟應用 | pm2 restart my-api |
零停機重載 | pm2 reload my-api |
查看日志 | pm2 logs my-api |
監控性能 | pm2 monit |
開機自啟 | pm2 save && pm2 startup |
PM2 是 Node.js 開發者必備的工具,能極大提升應用穩定性,建議熟練掌握! 🚀