2026/4/18 16:16:00
网站建设
项目流程
黄页引流推广网站软件免费,wordpress seo博客选哪个主题,大连网站建设选高和科技,站长工具爱站网适合人群#xff1a;Node.js新手、需要部署Node服务的开发者 核心目标#xff1a;搞懂PM2是什么、怎么用#xff0c;轻松实现Node服务稳定运行
一、PM2是什么#xff1f;为什么需要它#xff1f;
PM2 是一款专门为 Node.js 应用设计的 守护进程管理工具 #xff0c;核…适合人群Node.js新手、需要部署Node服务的开发者核心目标搞懂PM2是什么、怎么用轻松实现Node服务稳定运行一、PM2是什么为什么需要它PM2 是一款专门为Node.js应用设计的守护进程管理工具核心作用是「守护」和「管理」应用——简单说就是让你的 Node 服务能稳定后台运行就算意外崩溃也能自动重启不用手动盯着。举个例子平时用node index.js启动服务一旦关闭命令行窗口服务就停了如果代码报错导致服务崩溃也得手动重新启动。用了 PM2 后这些问题都解决了服务后台常驻崩溃自动重启还能统一管理多个服务、查看运行日志上线部署必备PM2 是一个功能强大的Node.js进程管理工具它就像一个管家一样守护和管理你的应用程序。想象一下你的Node.js应用需要一个24小时不间断的守护者PM2就是这个守护者PM2 核心能力总结守护进程后台稳定运行脱离命令行依赖自动重启服务崩溃、代码改动时自动重启多进程管理统一管理多个 Node 服务内置负载均衡充分利用多核 CPU仅 Node 应用日志管理自动记录应用输出日志方便排查问题监控告警实时查看 CPU、内存使用情况二、快速上手安装与第一个Node服务跟着步骤走5分钟搞定从安装到启动的全流程2.1 安装PM2全局安装一次安装全网可用打开命令行输入npmi pm2-g# 全局安装PM2pm2-v# 验证安装成功出现版本号即成功2.2 创建测试用的Node服务我们创建两个简单的 HTTP 服务用来演示 PM2 的管理功能新建文件夹比如pm2-demo进入文件夹后初始化项目mkdirpm2-democdpm2-demonpminit-y# 快速初始化package.json一路回车即可新建两个文件index.js和index2.js分别写入以下代码index.js3000端口lethttprequire(http);letserverhttp.createServer();server.on(request,function(req, res){console.log(------------------enter 3000端口);// 日志输出 res.write(hello pm2! 3000端口);res.end();});server.listen(3000,function(){console.log(服务器启动成功,通过 http://localhost:3000/ 进行访问);});index2.js3001端口lethttprequire(http);letserverhttp.createServer();server.on(request,function(req, res){console.log(------------------enter 3001端口);// 日志输出 res.write(hello pm2! 3001端口);res.end();});server.listen(3001,function(){console.log(服务器启动成功,通过 http://localhost:3001/ 进行访问);});2.3 用PM2启动服务进入pm2-demo文件夹执行以下命令# 1. 启动单个服务默认进程名是文件名pm2 start index.js# 2. 启动服务并指定进程名推荐管理时更直观pm2 start index.js-nnode-server-3000# 3. 启动第二个服务指定进程名pm2 start index2.js-nnode-server-3001# 4. 启动时监听文件改动文件改了自动重启服务开发必备pm2 start index.js-nnode-server-3000--watch启动成功后访问http://localhost:3000和http://localhost:3001能看到对应文字说明启动成功2.4 查看日志用以下命令查看服务运行日志能看到我们代码里的 console.log 输出pm2 log# 查看所有服务的日志pm2 log node-server-3000# 只查看指定进程名的日志三、PM2核心特点为什么选它管理Node服务PM2 能成为 Node 服务管理的首选全靠这些实用特点进程守护自动重启服务崩溃、意外退出时自动重启不用手动干预保证服务7x24小时运行灵活的进程配置可自定义应用名称、启动模式、内存限制等管理更精准集群模式负载均衡自动利用多核 CPU 资源把请求分发到多个进程提升服务并发能力仅适用于 Node.js 应用监听重启开发时开启--watch文件改动自动重启服务省掉手动重启的麻烦日志统一管理自动记录服务的标准输出和错误日志方便排查问题还能自定义日志路径系统自启动支持 Linux 系统开机自启服务器重启后服务自动恢复不用重新启动监控功能通过命令行或可视化工具查看服务的 CPU、内存使用情况掌握运行状态部署工作流支持测试、线上等多环境部署自动同步代码到不同服务器编程API提供 API 接口可通过代码灵活管理进程进阶需求四、常用命令速查表整理了日常最常用的 PM2 命令收藏起来随时查命令说明示例应用生命周期管理pm2 start [文件/配置] [选项]启动服务pm2 start index.js -n my-server --watchpm2 stop [进程名/ID]停止单个服务pm2 stop my-server 或 pm2 stop 00是进程IDpm2 stop all停止所有服务pm2 stop allpm2 restart [进程名/ID]重启单个服务pm2 restart my-serverpm2 restart all重启所有服务pm2 restart allpm2 delete [进程名/ID]删除单个服务配置改动后建议先删再启pm2 delete my-serverpm2 delete all删除所有服务pm2 delete allpm2 reload [文件/配置]重载应用0秒停机pm2 reload app1监控与日志pm2 logs查看日志pm2 logs app1pm2 monit实时监控CPU、内存使用pm2 monitpm2 show [进程名/id]查看单个服务的详细信息pm2 show app1pm2 status查看状态pm2 status进阶管理pm2 save保存当前进程列表pm2 savepm2 startup设置开机自启pm2 startuppm2 update更新PM2pm2 updatepm2 flush清空所有日志pm2 flush五、PM2两种配置方式命令行vs配置文件PM2 支持两种配置方式简单需求用命令行复杂需求用配置文件推荐后者更易维护。5.1 命令行配置简单需求启动服务时直接通过选项配置常用选项示例# 1. 指定进程名pm2 start index.js-nmy-server# 2. 监听文件改动pm2 start index.js--watch# 3. 指定解释器默认是node可指定其他pm2 start index.js--interpreternode# 4. 启动集群模式4个实例利用多核pm2 start index.js-i4# -i 后面是实例数# 查看所有选项pm2 --help5.2 配置文件复杂需求推荐PM2 支持json或yml格式的配置文件把所有配置写在文件里启动时直接指定配置文件即可。步骤1创建配置文件在项目根目录新建 processes.jsonJSON格式更通用{apps:[{name:node-server-3000, // 进程名script:index.js, // 启动脚本路径cwd:./, // 应用启动目录当前目录watch:true, // 开启监听文件改动ignore_watch:[node_modules,logs], // 忽略监听的文件夹max_memory_restart:1G, // 内存超过1G自动重启env:{// 环境变量NODE_ENV:production// 生产环境},log_date_format:YYYY-MM-DD HH:mm:ss, // 日志日期格式error_file:./logs/3000-error.log, // 错误日志路径out_file:./logs/3000-out.log// 标准输出日志路径},{name:node-server-3001,script:index2.js,cwd:./,watch:true,max_memory_restart:1G,error_file:./logs/3001-error.log,out_file:./logs/3001-out.log}]}步骤2启动服务通过配置文件启动所有服务pm2 start processes.json核心配置项说明配置项作用name进程名唯一标识script启动脚本的路径核心配置cwd应用启动的工作目录脚本执行的上下文目录watch是否监听文件改动true/falseignore_watch监听模式下需要忽略的文件/文件夹避免不必要的重启max_memory_restart最大内存限制超过则自动重启如1G、512Menv环境变量如NODE_ENVproduction区分开发/生产环境error_file/out_file错误日志和标准输出日志的存放路径instances启动实例数cluster模式下有效如4表示4个实例exec_mode启动模式fork默认、cluster集群模式六、监控与日志掌握应用运行状态6.1 两种监控方式方式1命令行监控简单直观pm2 monit# 实时监控CPU、内存使用情况pm2 list# 查看所有服务的运行状态ID、名称、CPU、内存、状态pm2 monit启动后按键盘方向键切换服务能看到实时的 CPU 和内存占用适合快速排查资源占用问题。方式2Keymetrics可视化监控进阶如果需要更详细的监控如历史数据、多服务器管理可以用 PM2 官方的Keymetrics工具——通过 web 页面可视化展示操作更友好适合生产环境使用需要注册账号免费版够用。6.2 日志管理避坑关键日志是排查问题的核心PM2 的日志默认存放在$HOME/.pm2/目录下分为两类PM2 自身日志$HOME/.pm2/pm2.log应用日志$HOME/.pm2/logs/[进程名]_out.log标准输出和 [进程名]_error.log错误日志避坑提醒如果应用有大量console.log输出会导致日志文件急剧增大甚至占满磁盘解决方案生产环境减少不必要的 console.log把不需要的输出重定向到 /dev/nullLinux/Mac定期清理日志。自定义日志路径在配置文件中通过error_file和out_file指定方便管理。七、让服务稳定运行的小技巧结合实际使用经验分享几个让 Node 服务更稳定的小配置设置最大内存限制通过max_memory_restart配置避免应用内存泄漏导致服务卡死。定时重启用cron_restart配置定时重启如每天凌晨3点规避长期运行的未知问题cron_restart:0 3 * * *// crontab格式分 时 日 月 周设置异常重启延迟通过restart_delay配置异常重启的延迟时间如2000ms避免服务频繁重启restart_delay:2000限制异常重启次数用max_restarts配置最大异常重启次数超过次数则停止重启避免无效循环max_restarts:10, // 最大重启10次min_uptime:3000// 运行少于3秒视为异常启动开启系统自启在 Linux 系统中设置 PM2 开机自启服务器重启后服务自动恢复pm2 startup# 生成自启脚本pm2 save# 保存当前的服务列表重启后自动启动这些服务总结PM2 是 Node.js 开发者必备的工具核心价值是「让服务稳定运行、让管理更简单」。新手入门只需掌握安装与启动npm i pm2 -g、pm2 start 脚本核心命令启动、停止、重启、查看日志、监控配置文件把复杂配置写进 JSON 文件统一管理稳定技巧内存限制、定时重启、系统自启