PM2 完全指南:Node.js 應用后臺啟動、關閉與重啟詳解

文章目錄

  • **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 開發者必備的工具,能極大提升應用穩定性,建議熟練掌握! 🚀

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/77627.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/77627.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/77627.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux環境變量詳解

引言 在Linux系統中,環境變量是一種非常重要的概念,它影響著系統的運行方式和應用程序的行為。無論你是Linux新手還是經驗豐富的管理員,深入理解環境變量都能幫助你更高效地使用和管理Linux系統。本文將從基礎概念到高級應用,全面…

408 計算機網絡 知識點記憶(8)

前言 本文基于王道考研課程與湖科大計算機網絡課程教學內容,系統梳理核心知識記憶點和框架,既為個人復習沉淀思考,亦希望能與同行者互助共進。(PS:后續將持續迭代優化細節) 往期內容 408 計算機網絡 知識…

@linux系統SSL證書轉換(Openssl轉換PFX)

在Linux中,你可以使用OpenSSL工具將PFX/P12格式的證書轉換為單獨的CRT(證書)、KEY(私鑰)文件以及提取證書鏈 1. 提取私鑰文件(.key) openssl pkcs12 -in your_certificate.pfx -nocerts -out private.key -nodes系統會…

DAOS系統架構-組件

如上圖所示,一個完整的DAOS系統是由管理節點組件、客戶端節點組件、服務端節點組件以及網絡通信組件四個部分組成。管理節點組件通過管理網絡通道(藍色)對DAOS服務管理和監控。客戶端節點組件通過數據網絡通道(紅色)與…

制作一款打飛機游戲教程2:背景滾動

滾動原型開發 接下來,我們開始聚焦滾動原型的開發。我們需要確定游戲關卡的長度以及背景滾動的速度。 地圖與精靈空間限制 在開發過程中,我們遇到了地圖與精靈空間限制的問題。PICO 8的地圖編輯器下半部分與精靈表共享空間,這意味著我們只…

計算機組成原理——CPU與存儲器連接例題

計算機組成原理——CPU與存儲器連接例題 設CPU共有16根地址線和8根數據線,并用(MREQ) ?作為訪存控制信號(低電平有效),(WR) ?作為讀/寫命令信號(高電平讀,低電平寫)。現有下列存儲芯片&#…

GNSS靜態數據處理

1 安裝數據處理軟件:儀器之星(InStar )和 Trimble Business Center 做完控制點靜態后,我們需要下載GNSS數據,對靜態數據進行處理。在處理之前需要將相關軟件在自己電腦上安裝好: 儀器之星(InS…

Process Explorer 性能調優實戰:精準定位資源泄漏與高負載進程

一、下載與安裝 ?下載地址? Process Explorer安裝包下載:https://pan.quark.cn/s/950c36ba5364下載后解壓壓縮包,運行 procexp.exe(32 位系統)或 procexp64.exe(64 位系統)?。 ?界面概覽? 主界面以樹…

SVMSPro分布式綜合安防管理平臺-->以S3存儲革新,開啟智能安防新紀元

SVMSPro分布式綜合安防管理平臺–>以S3存儲革新,開啟智能安防新紀元 在數字化轉型浪潮下,企業安防管理正面臨海量數據存儲、跨區域協同以及數據安全的嚴峻挑戰。如何實現高效、彈性、低成本的存儲擴容?如何確保關鍵錄像數據萬無一失&…

Python 裝飾器(Decorator)

文章目錄 代碼解析1. 裝飾器定義 timer(func)2. 應用裝飾器 timer **執行流程****關鍵點****實際應用場景****改進版本(帶 functools.wraps)** 這是一個 Python 裝飾器(Decorator) 的示例,用于測量函數的執行時間。下…

git commit時自動生成Change-ID

創建全局鉤子目錄: 創建一個全局的Git hooks目錄: mkdir -p ~/.githooks 下載并設置commit-msg鉤子腳本: 下載Gerrit的commit-msg鉤子腳本,并放置在全局鉤子目錄中(如下載不了,可從本頁面附件中下載,“…

最新Ktransformers v0.24(Docker)并發部署DeepSeek-V3-0324模型

一、介紹 KTransformers v0.2.4 發布說明 我們非常高興地宣布,期待已久的 KTransformers v0.2.4 現已正式發布!在這個版本中,我們對整 體架構進行了重大重構,更新了超過 1 萬行代碼,為社區帶來了備受期待的多并發支…

飛牛私有云5大硬核功能實測!

📸 1. 智能相冊:AI搜圖原圖自由 - 自動備份:手機照片/視頻實時同步,支持RAW格式、實況照片無損備份,釋放128G手機秒變256G。 - AI黑科技: - 人臉識別:自動歸類人物相冊,輸入「媽媽…

webrtc pacer模塊(一) 平滑處理的實現

Pacer起到平滑碼率的作用,使發送到網絡上的碼率穩定。如下的這張創建Pacer的流程圖,其中PacerSender就是Pacer,其中PacerSender就是Pacer。這篇文章介紹它的核心子類PacingController及Periodic模式下平滑處理的基本流程。平滑處理流程中還有…

【android bluetooth 協議分析 01】【HCI 層介紹 1】【hci_packets.pdl 介紹】

在 AOSP 的藍牙協議棧 (Gabeldorsche) 中,hci_packets.pdl 是一個 協議描述語言文件,用于定義 HCI (Host Controller Interface) 層的數據包結構和通信協議。以下是詳細解析: 1. 文件作用 system/gd/hci/hci_packets.pdl 協議自動化生成&…

操作系統 4.2-鍵盤

鍵盤中斷初始化和處理 提取的代碼如下: // con_init 函數,初始化控制臺(包括鍵盤)的中斷 void con_init(void) {set_trap_gate(0x21, &keyboard_interrupt); } ? // 鍵盤中斷處理函數 .globl _keyboard_interrupt _keyboard…

深入理解Softmax函數及其在PyTorch中的實現

Softmax函數簡介 Softmax函數在機器學習和深度學習中,被廣泛用于多分類問題的輸出層。它將一個實數向量轉換為概率分布,使得每個元素介于0和1之間,且所有元素之和為1。 Softmax函數的定義 給定一個長度為 K K K的輸入向量 z [ z 1 , z 2 …

Vue 3 響應式更新問題解析

在 Vue 3 中,即使使用 reactive 或 ref 創建的響應式數據,當數據量很大時也可能出現更新不及時的情況。以下是原因和解決方案: 核心原因 ??響應式系統優化機制??: Vue 3 使用 Proxy 實現響應式,比 Vue 2 更高效但為…

異形遮罩之QML中的 `OpacityMask` 實戰

文章目錄 🌧? 傳統實現的問題👉 效果圖 🌈 使用 OpacityMask 的理想方案👉代碼如下🎯 最終效果: ? 延伸應用🧠 總結 在 UI 設計中,經常希望實現一些“異形區域”擁有統一透明度或顏…

數據可視化 —— 堆形圖應用(大全)

一、案例一:溫度堆積圖 # 導入 matplotlib 庫中的 pyplot 模塊,這個模塊提供了類似于 MATLAB 的繪圖接口, # 方便我們創建各種類型的可視化圖表,比如折線圖、柱狀圖、散點圖等 import matplotlib.pyplot as plt # 導入 numpy 庫&…