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.mzph.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 库&…