iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Node的进程管理工具pm2怎么使用
  • 606
分享到

Node的进程管理工具pm2怎么使用

2023-07-05 21:07:24 606人浏览 薄情痞子
摘要

本篇内容介绍了“node的进程管理工具pm2怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!PM2简介PM2是一个内建了负载均衡器的n

本篇内容介绍了“node的进程管理工具pm2怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

PM2简介

PM2是一个内建了负载均衡器的node进程管理工具,可以利用它来简化很多node应用管理的繁琐任务,如性能监控、自动重启、负载均衡等,而且使用非常简单。当你要把你的独立代码利用全部的服务器上的所有 CPU,并保证进程永远都活着,0 秒的重载, PM2 是完美的。

为什么需要pm2?

目前nodejs开发中有很多痛点,因为node本身是一个单线程应用,它的特点就是所有方法都是串行一次执行,并且node并没有能力像Java一样独自去创建一个新的线程来实现异步操作,如果在执行I/O中遇到了阻塞就会降低整个应用的执行效率,导致CPU使用率高等不利原因。

因此在这种模式下,一个线程只能处理一个任务,要想提高吞吐量必须通过多线程。虽然单线程的好处有很多比如避免了线程同步或者死、状态同步等等之类的问题,但是在应用和计算能力要求日益倍增的今天,单线程最大的弊端就是无法利用多核CPU带来的优势来提升运行效率。pm2可以把你的应用部署到服务器所有的CPU上,有效的解决这个问题

特性

  • 内建负载均衡(使用Node cluster 集群模块)

  • 后台运行

  • 0秒停机重载(维护升级的时候不需要停机).

  • 具有ubuntuCentos 的启动脚本

  • 停止不稳定的进程(避免无限循环)

  • 控制台检测

  • 提供 Http api

  • 远程控制和实时的接口API ( Nodejs 模块,允许和PM2进程管理器交互 )

安装

直接使用 npm 进行全局安装即可。当然你也可以使用 yarn 来进行安装

// npmnpm install -g pm2 // yarnyarn global add pm2

基本命令

// 启动命令pm2 start app.js // 启动nodeJs应用,进程的默认名称为文件名apppm2 start app.js--name mynode // 启动node,并指定进程名称为mynodepm2 start app.js - i max // 根据有效CPU数目启动最大进程数目pm2 start app.js - i 3 // 启动3个进程pm2 start app.js--watch // 实时监控的方式启动,app.js文件有变动时,pm2会自动reloadpm2 start app.js - x // 用fork模式启动 app.js 而不是使用 clusterpm2 start app.js - x– - a 23 // 用fork模式启动 app.js 并且传递参数(-a 23)pm2 start app.JSON // 启动进程, 在app.json里设置选项pm2 start app.js - i max– - a 23 // 在 – 之后给 app.js 传递参数pm2 start app.js - i max - e err.log - o out.log // 启动并生成一个配置文件 // 查看与监视进程pm2 list | pm2 ls // 显示所有进程;pm2 show 0 | pm2 info 0 // 查看进程id为0的详细信息pm2 monit // 进入监视页面,监视每个node进程的CPU和内存的使用情况 // 停止、删除进程pm2 stop 0 // 停止id为0的进程pm2 stop all // 停止所有进程pm2 delete 0 // 删除id为0的进程pm2 delete all // 删除所有进程 // 重启、重载pm2 restart 0 // 重启id为0的进程pm2 restart all // 重启所有进程pm2 reload 0 // 0秒停机重载id为0进程(用于 NETWORKED 进程)pm2 reload all // 重载所有进程 // 日志操作pm2 logs // 显示所有进程的日志pm2 logs 0 // 显示进程id为0的日志pm2 flush // 清空所有日志文件pm2 reloadLogs // 重载所有日志pm2 startup // 产生init脚本,保持进程活着 // 杀死PM2进程pm2 kill

pm2使用方式

使用 pm2 主要有 2 种方式:命令行、配置文件。虽然使用配置文件的方式最终仍然需要使用命令行来启动,但两者的主要区别是:(1)命令行方式需要将各种配置参数在命令行中输入。(2)配置文件方式将各种配置参数放在了配置文件里面。

举个例子:你需要启动一个应用,并指定应用名称为 newApp,设定入口文件路径为 index.js ,我们来看看如何通过两种方式将应用名称和入口文件路径这两个参数带进去

【1】命令行方式

pm2 start index.js --name newApp

【2】配置文件方式

首先我们需要创建一个配置文件(pm2.config.js),里面内容如下:

// 文件名为 pm2.config.jsmodule.exports = {    apps: [{        name: "newApp", // 应用名称        script: "./index.js" // 入口文件    }]}

然后再在命令行输入以下内容,表明以指定的配置文件启动应用

pm2 start pm2.config.js

【3】总结

通过对比以上两种形式,你可以看出:使用配置文件的方式,可以将各种参数、环境变量等内容 持久化 地保留在文件中,方便批量管理各种应用,避免在命令行中由于 遗忘、手误 等原因导致启动参数的不可控。

创建配置文件的方式

可以自行创建一个 javascript 文件或者使用以下命令生成配置文件,需要注意的一点是,pm2 要求配置文件的文件名必须以 .config.js 结尾。

【1】命令生成

pm2 ecosystem

命令生成的配置文件名称为ecosystem.config.js,格式如下, 可以发现这个文件就是导出 一个对象,其中有个 apps 属性,这是一个列表,其中的每一项都对应一个应用,在每一个子项的对象中设置对应应用的配置参数,你可以在配置文件中配置多个应用。

module.exports = {  apps : [{    script: 'index.js',    watch: '.'  }, {    script: './service-worker/',    watch: ['./service-worker']  }],   deploy : {    production : {      user : 'ssh_USERNAME',      host : 'SSH_HOSTMacHINE',      ref  : 'origin/master',      repo : 'git_REPOSITORY',      path : 'DESTINATION_PATH',      'pre-deploy-local': '',      'post-deploy' : 'npm install && pm2 reload ecosystem.config.js --env production',      'pre-setup': ''    }  }};

【2】自行创建

如果你自行创建 Javascript 文件,按照以上格式创建即可,注意文件名要以config.js结尾。

【3】注意

这个配置文件无论是通过命令创建或者你手工自己创建的,只要符合语法,两者是没有任何区别的。除了 .js 形式的配置文件外,pm2 还支持 .json 和 .yml 形式的配置文件,这三种配置文件的形式本质上没有任何区别,参数名称也完全一致,差异仅在于参数呈现的方式。

案例

我们先创建几个项目文件用于演示,目录结构如下,demo1目录存放的项目project1用命令行方式使用pm2,demo2目录存放的项目project2和project3用配置文件方式使用pm2, 三个项目都是node.js项目,index.js是非常基础的 Koa 项目入口文件,ecosystem.config.js是配置文件,各自的 node_modules 文件中只安装了 koa 框架

pm2├── demo1    └── project1|       ├── index.js|       └── node_modules└── demo2    ├── ecosystem.config.js    ├── project2    │   ├── index.js    │   └── node_modules    └── project3        ├── index.js        └── node_modules

入口文件index.js代码如下,三个项目的port分别为 8001、8002、8003

'use strict'const Koa = require('koa')const app = new Koa()const PORT = 8001 // 三个项目分别为 8001,8002,8003app.use(ctx => {    ctx.body = {        NODE_ENV: process.env.NODE_ENV,        url: ctx.url,        port: PORT,    }})app.listen(PORT)

配置文件ecosystem.config.js 代码如下

module.exports = {    apps: [{        cwd: '../demo2/project2',        name: 'project2',        script: 'index.js',        watch: ['.']    },        cwd: '../demo2/project3',        name: 'project3',        script: 'index.js',        watch: ['.']    }]}

【1】启动应用

命令行方式:pm2 start xxx.js

配置文件方式:pm2 start || pm2 start ecosystem.config.js

我们使用命令行方式启动project1应用,进入到project文件目录,运行pm2 start index.js命令,我们没有在命令中设定任何参数,pm2 会自动按照默认参数值进行执行。例如自动将入口文件的文件名index作为应用名称。几乎每一次命令执行完成后,pm2 都会显示一个应用列表(如下图所示),接着你就可以在网页中输入:localhost:8001查看project1项目

Node的进程管理工具pm2怎么使用

我们接着使用配置文件方式启动project2和project3应用,因为两个应用的配置在同一个文件,因此我们只需要运行一次配置文件,启动成功后可在网页中访问localhost:8002和localhost:8003

Node的进程管理工具pm2怎么使用

【2】停止应用

使用id停止:pm2 stop <id>

使用name停止:pm2 stop <name>

停止所有应用:pm2 stop all

Node的进程管理工具pm2怎么使用

【3】重启应用

使用id重启:pm2 reload <id>

使用name重启:pm2 reload <name>

重启所有应用:pm2 reload all

Node的进程管理工具pm2怎么使用

【4】显示应用列表

pm2 list

pm2 ls

pm2 status

Node的进程管理工具pm2怎么使用

【5】以JSON格式显示应用列表

pm2 jlist

pm2 prettylist

Node的进程管理工具pm2怎么使用

使用 pm2 jlist 命令,你会发现输出的内容很乱,你可以使用 pm2 prettylist 命令来输出优化过的 JSON 格式内容

Node的进程管理工具pm2怎么使用

【6】查看应用信息

pm2 describe id
pm2 describe name

上述的 JSON 格式应用列表,输出了所有应用的信息,而且信息十分凌乱,我们可以使用 pm2 describe 命令来查看指定应用的信息

Node的进程管理工具pm2怎么使用

【7】实时打印日志

打印日志:pm2 logs

指定日志行数:pm2 logs --lines  (指定显示的日志行数)

清空日志:pm2 flush

对于线上正在运行的应用,有的时候需要打印实时日志来进行调试排查问题,虽然日志会自动添加到日志文件里面,但是总之不太方便。pm2 提供了logs命令,可以直接实时打印日志。

注意:当前命令行页面使用了该命令后,当前命令行会一直处于监听状态,你需要再新开一个命令行去敲其他命令

【8】显示仪表盘

pm2 monit

Node的进程管理工具pm2怎么使用

【9】删除应用

通过Id删除:pm2 delete id

通过name删除:pm2 delete name

删除所有应用:pm2 delete all

删除应用几乎不会造成任何后果,只是在管理列表中删除了这一项,并不会删除项目文件

Node的进程管理工具pm2怎么使用

【10】配置参数-应用名称

--name <app_name>

在命令行方式中,使用 --name <app_name> 参数指定应用名称,上面我们命令行运行的project1默认名称为index,现在我们指定名称为project1

Node的进程管理工具pm2怎么使用

【11】配置参数-监听目录

监听目录:--watch

指定目录不被监听:--ignore-watch

监听目录用于当指定监听目录文件发生变化时,pm2 将会自动重启应用

Node的进程管理工具pm2怎么使用

除了指定一个监听目录外,还可以再继续指定某个目录不被监听,例如上述的例子,指定了project1目录为监听目录,然后你把日志文件放在了这个目录下,比如为 logs 目录,这个目录不希望被监听,否则会形成死循环,这时候就需要用到另一个参数 --ignore-watch,输入一下命令

pm2 start 0 --watch --ignore-watch './logs'

【12】配置参数-最大内存数

--max-memory-restart xxx(K|M|G)

设置最大内存数,当应用运行时占用的内存超出该数值后,应用将自动重启。命令行方式通过 --max-memory-restart 参数设定应用运行最大内存,后续跟上数值和单位,单位只能是 K,M,G 三个值,分别表示 KB,MB,GB 。

Node的进程管理工具pm2怎么使用

【13】配置参数-日志存放路径

--log <log_path>

日志默认会放置在 $HOME/.pm2/logs/ 目录下,使用 --log <log_path> 指定日志文件路径

pm2 start index.js --log ./logs/mylog.log

“Node的进程管理工具pm2怎么使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: Node的进程管理工具pm2怎么使用

本文链接: https://www.lsjlt.com/news/355304.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • node进程管理工具PM2怎么使用
    今天小编给大家分享一下node进程管理工具PM2怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。PM2是node进程管...
    99+
    2023-07-02
  • Node的进程管理工具pm2怎么使用
    本篇内容介绍了“Node的进程管理工具pm2怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!PM2简介PM2是一个内建了负载均衡器的n...
    99+
    2023-07-05
  • node进程管理工具PM2用法详解
    PM2是node进程管理工具,可以利用它来简化很多node应用管理的繁琐任务,如性能监控、自动重启、负载均衡等,而且使用非常简单。 安装 npm install -g pm2 常用命...
    99+
    2022-11-13
  • 深入浅析Node的进程管理工具“pm2”
    我们使用命令行方式启动project1应用,进入到project文件目录,运行pm2 start index.js命令,我们没有在命令中设定任何参数,pm2 会自动按照默认参数值进行执行。例如自动将入口文件的文件名index作为应用名称。几...
    99+
    2023-05-14
    node nodejs
  • 一文教你如何使用Node进程管理工具-pm2
    目录pm2 是什么pm2 基本命令负载均衡配置文件日志总结pm2 是什么 pm2 是一个守护进程管理工具,它能帮你守护和管理你的应用程序。通常一般会在服务上线的时候使用 pm2 进行...
    99+
    2023-05-16
    Node进程管理工具pm2 进程管理工具pm2
  • 深入聊聊Node进程管理工具-pm2的使用方法
    如何使用Node进程管理工具-pm2,下面本篇文章带大家聊聊Node进程管理工具-pm2的使用方法,希望对大家有所帮助!pm2 是什么pm2 是一个守护进程管理工具,它能帮你守护和管理你的应用程序。通常一般会在服务上线的时候使用 pm2 进...
    99+
    2023-05-14
    node Node.js
  • node 使用 pm2 日志管理及使用 pm2-logrotate 进行日志分割
    目录 1. 需求背景  2. 什么是 pm2-logrotate ? 3. 查看 pm2 自带的日志管理 4. 安装 pm2-logrotate 5. 查看配置指令  6. pm2-logrotate 具体配置说明 7. 如何设置这些值? ...
    99+
    2023-10-04
    linux 运维 服务器
  • python进程管理工具怎么使用
    Python进程管理工具可以通过多种方式使用,以下是一些常见的用法示例:1. 使用`os`模块创建新的进程:```pythonimp...
    99+
    2023-10-12
    python
  • systemd进程管理工具怎么用
    systemd进程管理工具怎么用,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。 1. systemd介绍systemd是目前Linux系统上主要的系统...
    99+
    2023-06-15
  • 详解使用PM2管理nodejs进程
    pm2 是一个带有负载均衡功能的Node应用的进程管理器. 当你要把你的独立代码利用全部的服务器上的所有CPU,并保证进程永远都活着,0秒的重载, PM2是完美的。 它非常适合IaaS结构,但不要把它用于P...
    99+
    2022-06-04
    详解 进程 nodejs
  • node的PM2怎么安装和使用
    今天小编给大家分享一下node的PM2怎么安装和使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。PM2是node进程管理工...
    99+
    2023-06-27
  • node中的包和包管理工具怎么安装使用
    这篇“node中的包和包管理工具怎么安装使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“node中的包和包管理工具怎么安装...
    99+
    2023-07-04
  • Linux运维工具Supervisor的安装使用(进程管理工具)
    一、介绍 Supervisor是用python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。目前Supervisor可以运行在大多数Unix系统上,但不...
    99+
    2022-06-04
    Linux运维工具Supervisor Linux Supervisor
  • 如何使用Systemd进程管理工具
    这期内容当中小编将会给大家带来有关如何使用Systemd进程管理工具,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 1. systemd介绍systemd是目前Linux系统上主要的系统守护进程...
    99+
    2023-06-15
  • Node版本管理工具nvm在windows的使用方法
    这篇文章主要讲解了“Node版本管理工具nvm在windows的使用方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Node版本管理工具nvm在windo...
    99+
    2022-10-19
  • Linux进程管理工具Supervisor怎么安装
    本篇内容主要讲解“Linux进程管理工具Supervisor怎么安装”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux进程管理工具Supervisor怎么安装”吧!实验环境系统平台cat&...
    99+
    2023-06-15
  • linux管理工具怎么使用
    本篇内容主要讲解“linux管理工具怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“linux管理工具怎么使用”吧!linux管理工具有:1、htop,一款监控与进程管理软件;2、dsta...
    99+
    2023-06-30
  • 开源的进程管理工具Supervisor
    Supervisor是一个开源的进程管理工具,可以帮助用户监控和控制运行在Unix-like系统上的进程。它提供了一套简单的API和...
    99+
    2023-09-22
    Supervisor
  • Node.js包管理工具怎么使用
    这篇文章主要介绍“Node.js包管理工具怎么使用”,在日常操作中,相信很多人在Node.js包管理工具怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Node.js包管理工具怎么使用”的疑惑有所帮助!...
    99+
    2023-07-06
  • 基于node的cli工具怎么开发使用
    本篇内容介绍了“基于node的cli工具怎么开发使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!背景公司内部有维护admin和h6两套基础...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作