PM2的基本使用

本文详细介绍了PM2,一个用于管理和守护Node.js应用程序的守护进程工具,涵盖了安装、常用命令、特性如负载均衡、重启策略,以及配置文件的使用。此外,还提及了PM2Plus的付费服务和高级功能。
摘要由CSDN通过智能技术生成

PM2的基本使用

PM2简介

PM2 是一个守护进程管理工具,帮助管理和守护应用程序。它以简单直观的 C​​LI 命令行方式进行工作。PM2 有着丰富的特性:能够充分利用多核 CPU且能够负载均衡、能够帮助应用在崩溃后、指定时间(cluster model)和超出最大内存限制等情况下实现自动重启。

pm2的主要特性

  • 内建负载均衡(使用 Node cluster 集群模块)。
  • 后台运行 。
  • 0 秒停机重载(大概意思是维护升级的时候不需要停机)。
  • 具有 Ubuntu 和 CentOS 的启动脚本。
  • 停止不稳定的进程(避免无限循环)。
  • 控制台检测。
  • 提供 HTTP API 远程控制和实时的接口。
  • API(Nodejs 模块,允许和 PM2 进程管理器交互)。

常用命令

PM2安装

npm install pm2 -g
或
yarn global add pm2
查看PM2的版本
pm2 -version

PM2更新

pm2 updated
或
npm install pm2@latest -g

PM2启动并守护指定程序

pm2 start 需要启动的文件
比如:
pm2 start app.js

在这里插入图片描述

PM2启动应用程序并设置进程名称
pm2 start 需要启动的文件 --name 进程名称
pm2 start 需要启动的文件 --name=“进程名称”
比如:
pm2 start app.js --name demo
pm2 start app.js --name=‘demo’

在这里插入图片描述

PM2启动应用程序并传递参数
pm2 start 需要启动的文件 -- 参数1 参数2
比如:
pm2 start app.js -- arg1 arg2  # 启动应用,并传递参数“arg1 arg2”
PM2启动应用程序并设置当文件改变时会重启应用
pm2 start 需要启动的文件 --watch
比如:
pm2 start app.js  --watch
PM2启动的同时检测日志流
pm2 start 需要启动的文件 --attach
比如:
pm2 start app.js  --attach

PM2查看所有进程列表

pm2 list

在这里插入图片描述

PM2停止指定程序

pm2 stop [进程名称]
pm2 stop [进程id]
比如:
pm2 stop demo
pm2 stop 1

在这里插入图片描述

PM2停止所有进程
pm2 stop all

在这里插入图片描述

PM2重启所有进程

注意:restart命令同时杀死并重启所有进程。短时间内服务不可用。生成环境推荐使用reload

pm2 restart all

PM2 0秒停机重载

pm2 reload all

PM2 删除进程

PM2删除所有进程
pm2 delete all
PM2删除指定进程
pm2 delete [进程名称]
pm2 delete [进程id]

在这里插入图片描述
在这里插入图片描述

PM2显示所有进程的日志

pm2 logs
PM2显示指定进程的日志
pm2 logs [进程名称]
pm2 logs [进程id]

在这里插入图片描述

PM2 日志json化
pm2 logs --json
PM2 清除日志
pm2 flush
PM2 重载日志
pm2 reloadLogs

PM2实时查看进程的内存占用情况

pm2 monit

在这里插入图片描述

PM2打开监控和诊断的web界面

PM2 Plus 是一个付费的 PM2 服务,它可以帮助我们更好地管理 PM2 进程。PM2 Plus 提供了以下功能:

  • 实时监控:可以实时监控 PM2 进程的状态,包括 CPU 使用率、内存使用率等。
  • 消息通知:可以通过邮件、短信等方式接收 PM2进程的异常信息。
  • 集成部署:可以将代码部署到多个服务器上,并通过 PM2 Plus 进行集成部署。
  • 线上调试:可以在线上对 PM2进程进行调试。
  • 其他功能:还有一些其他有用的功能,比如日志管理、进程监控等。
pm2 plus

PM2查看进程的所有信息

pm2 show [进程名称]
pm2 show [进程id]

在这里插入图片描述

PM2集群模式

启动4个应用程序实例,并将网络请求负载均衡到每个应用中。
pm2 start app.js -i 4

根据有效cpu数启动最大的进程数
pm2 start app.js -i max

用fork模式启动而非cluster
pm2 start app.js -x

启动应用程序并分别指定标准输出日志文件和错误日志文件
pm2 start app.js -e err.log -o out.log

将应用程序调整到10个实例
pm2 scale [进程名称] 10

PM2重置应用的重启数量

pm2 reset [进程名称]

PM2在集群模式下,平稳的重新加载所有应用

pm2 gracefulReload all

重启/引导管理

自动检测init系统 + 在服务器启动时生成和配置pm2引导
PM2可以在守护进程模式下运行,可以将应用程序作为服务运行。在守护进程模式下,PM2会将应用程序作为系统服务运行,并在系统启动时自动启动应用程序。该命令会生成一个启动脚本,并将其添加到系统服务中。使用*pm2 save*命令可以将应用程序添加到系统服务中。
pm2 startup

手动指定启动系统,可以是:systemd(Ubuntu 16 , CentOS, Arch)、upstart( Ubuntu 14/12)、launchd( MacOSx, Darwin)、rcd( FreeBSD)。
pm2 startup [platform] 

在服务器启动时禁用和删除pm2引导
pm2 unstartup

保存当前进程列表(该命令会将当前 PM2 进程列表保存到系统服务中)
pm2 save

恢复以前保存的进程
pm2 resurrect

停用和删除启动系统
pm2 unstartup

保存进程,终止pm2并恢复进程
pm2 update

生成样本json配置文件
pm2 generate

部署

设置“生产环境”远程服务器
pm2 deploy app.json prod setup

更新“生产环境”远程服务器
pm2 deploy app.json prod

将“生产环境”远程服务器恢复
pm2 deploy app.json prod revert

模块系统

生成名为name的示例模块
pm2 module:generate [name]

安装模块(这里是日志循环模块)
pm2 install pm2-logrotate

卸载模块(这里是日志循环模块)
pm2 uninstall pm2-logrotate

增量版本,git push和npm发布
pm2 publish

PM2生成配置文件

pm2 ecosystem
pm2 init

在这里插入图片描述

module.exports = {
    apps : [{ // json结构,apps是一个数组,每一个数组成员就是对应一个pm2中运行的应用
        name      : 'API',      //应用名
        script    : 'app.js',   //应用文件位置
        env: {
            PM2_SERVE_PATH: ".",    //静态服务路径
            PM2_SERVE_PORT: 8080,   //静态服务器访问端口
            NODE_ENV: 'development' //启动默认模式
        },
        env_production : {
            NODE_ENV: 'production'  //使用production模式 pm2 start ecosystem.config.js --env production
        },
        env_development: {
            NODE_ENV: 'production'  //使用development模式 pm2 start ecosystem.config.js --env development
        },
        instances:"max",          //将应用程序分布在所有CPU核心上,可以是整数或负数
        watch:true,               //监听模式
        ignore_watch:["node_modules"], //忽略监视的文件或目录
        watch_options:{ //监视选项
        	"followSymlinks": false
        },
        output: './out.log',      //指定日志标准输出文件及位置
        error: './error.log',     //错误输出日志文件及位置,pm2 install pm2-logrotate进行日志文件拆分
        merge_logs: true,         //集群情况下,可以合并日志
        log_type:"json",          //日志类型
        log_date_format: "DD-MM-YYYY",  //日志日期记录格式
        args: ["--port", "3000"],  //传递给应用程序的参数
        exec_mode:'cluster',  //执行模式,可以是 fork 或 cluster
        max_memory_restart:"200M",  //当进程使用的内存超过指定的值时,自动重启进程
    }],
    deploy : {
        production : {
            user : 'node',                      //ssh 用户
            host : '212.83.163.1',              //ssh 地址
            ref  : 'origin/master',             //GIT远程/分支
            repo : 'git@github.com:repo.git',   //git地址
            path : '/var/www/production',       //服务器文件路径
            post-deploy : 'npm install && pm2 reload ecosystem.config.js --env production'  //部署后的动作
        }
    }
PM2根据生成的配置文件启动程序
pm2 start ecosystem.config.js --env production

关于配置文件的详解,请看官方文档

【参考链接】

链接1
链接2
链接3
链接4
pm2中文网

  • 19
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值