目录

pm2是什么

特点

示例说明

配置文件

常用命令

背景

由于需要在容器云新增一个测试环境,改了代码相关的配置后,进行部署。发现服务一直启动不了。在和运维一起排查问题,他看到pm2的一些信息, 问我pm2是不是阻塞了,并不是很清楚pm2是什么。就初步学习了一下,进行记录。

PM2是什么

Precess Manager 2

PM2是一个进程管理工具,维护一个进程列表,可以用来管理正在用行的进程,实时查看日志,性能监控等功能

特点

  • 日志管理 (已使用)
  • 支持监听重启
  • 支持部署工作流
  • 支持集群模式
  • 支持性能监控
  • 支持pm2 开发

示例说明

  1. 首先 npm init 新建一个node项目

  2. 全局安装pm2  (npm install pm2 -g), 如果已经安装过,则不需要再次操作

  3. 在这个项目里新建index.js, (创建一个http服务器)

  4. 执行命令 pm2 ecosystem, 默认会生成pm2的配置文件)( ecosystem.config.js)

  5. 在配置文件里进行关于应用的各种配置

    ![屏幕快照 2020-08-26 19.35.23](/Users/jiaxiaoyu/Desktop/屏幕快照 2020-08-26 19.35.23.png)

配置文件

  1. 执行命令 pm2 ecosystem, 默认会生成 ecosystem.config.js  (和package.json放在一个根目录下)

  2. 生成文件内容如下

    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': ''    }  }};
    
    
  • apps 是一个数组, 每一项数组成员对应一个pm2中的应用

对配置文件详解

配置名 含义
apps json结构,是一个数组,里面每一项是一个pm2的应用
name 应用程序名称
cwd 应用程序所在目录
script 应用程序启动文件所在目录
exec_mode 应用启动模式,默认是fork, 可设置为 cluster集群
instances 应用启动实例个数,仅在cluster模式有效
max_memory_restart 最大内存限制数, 超出自动重启
log_date_format 日志文件格式
error_file 错误日志文件路径
out_file 正常日志文件路径
merge_logs 设置追加日志而不是新建日志
autorestart 是否自动重启, true/false
watch 是否启用监控模式,默认是false。如果设置成true,当应用程序变动时,pm2会自动重载
ignore_watch 不用监听的文件,例如node_modules
restart_delay 延时重启时间
env 生产环境变量
env_dev 开发环境变量
env_test 测试环境变量
min_uptime 如果应用程序在这个时间退出,pm2会认为程序异常退出,此时触发重启max_restarts设置数量
max-restarts 异常时重启次数

示例app进行配置如下:

module.exports = {  apps : [    {      name: 'xiaoyu_node_test',   //名称      script: 'index.js',   //程序入口      watch: '.',  // 需要监控的目录      error_file: '/home/logs/err.log',  //错误日志文件      out_file: '/home/logs/info.log',  // 正常日志文件      log_date_format: 'YYYY-MM-DD HH:mm:ss',  // 指定日志文件的时间格式      autorestart: true,   // 发生异常是否自动重启, true重启, false不重启      env: {        NODE_ENV: 'production',  //环境参数,当前指定为生产环境 process.env.NODE_ENV        REMOTE_ADDR: ''   // process.env.REMOTE_ADDR      },      env_dev: {        NODE_ENV: 'development',  //环境参数,当前指定为开发环境 pm2 start app.js --env_dev        REMOTE_ADDR: ''   // process.env.REMOTE_ADDR      }

    },     {      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': ''    }  }};

常用命令

  1. 安装pm2

    npm install pm2 -g           // 要进行全局安装
  2. 启动进程(应用)

  • 1.直接启动对应的js文件

    pm2 start index.js

    ![屏幕快照 2020-08-26 11.07.44](/Users/jiaxiaoyu/Desktop/屏幕快照 2020-08-26 11.07.44.png)

  • 2.启动pm2的配置文件

    pm2 start ecosystem.config.js

    ![屏幕快照 2020-08-26 11.08.14](/Users/jiaxiaoyu/Desktop/屏幕快照 2020-08-26 11.08.14.png)

重启

pm2 restart ecosystem.config.js

查看日志

pm2 logs

![屏幕快照 2020-08-26 11.11.14](/Users/jiaxiaoyu/Desktop/屏幕快照 2020-08-26 11.11.14.png)

可以实时展示日志,而且会在自己配置文件中指定的路径生成日志文件

查看进程 以及 查看进程详情

pm2 list

![屏幕快照 2020-08-26 11.13.08](/Users/jiaxiaoyu/Desktop/屏幕快照 2020-08-26 11.13.08.png)

具体的查看某一个进程详情,例如查看id=4的进程

pm2 describe 4     //id号

![屏幕快照 2020-08-26 11.16.04](/Users/jiaxiaoyu/Desktop/屏幕快照 2020-08-26 11.16.04.png)

查看cpu和内存资源占用等一些性能指标

pm2 monit

![屏幕快照 2020-08-26 18.17.34](/Users/jiaxiaoyu/Desktop/屏幕快照 2020-08-26 18.17.34.png)

![屏幕快照 2020-08-26 18.17.42](/Users/jiaxiaoyu/Desktop/屏幕快照 2020-08-26 18.17.42.png)

*https://keymetrics.io/这个网址,经过一些设置,可以可视化看一些指标。由于打不开这个页面, 没有进行实际测试

停止进程

pm2 stop 0                // 0是id  id|name|namespace|all|json|stdin

![屏幕快照 2020-08-26 18.22.58](/Users/jiaxiaoyu/Desktop/屏幕快照 2020-08-26 18.22.58.png)

status 已经变成 stoped

删除进程

pm2 delete 0.        //id号

上述的列表里就会删掉这一条

开机自启动

  • pm2 start 配置文件

  • pm2 save      // 保存现有列表数据

  • pm2 startup   //设置开机启动

结尾

Pm2 能做的还有很多,等待挖掘...

使用pm2启动node文件_PM2 是什么相关推荐

  1. 使用pm2启动node文件_使用pm2部署node生产环境的方法步骤

    一.PM2是什么 是可以用于生产环境的Nodejs的进程管理工具,并且它内置一个负载均衡.它不仅可以保证服务不会中断一直在线,并且提供0秒reload功能,还有其他一系列进程管理.监控功能.并且使用起 ...

  2. 使用pm2启动node文件_使用 PM2 管理nodejs进程

    pm2 是一个带有负载均衡功能的Node应用的进程管理器. 当你要把你的独立代码利用全部的服务器上的所有CPU,并保证进程永远都活着,0秒的重载, PM2是完美的. 它非常适合IaaS结构,但不要把它 ...

  3. pm2启动node项目

    前端项目部署阿里云要配置nginx,然后启动nginx就可以了, 如果是node服务,想一直启动,可以用PM2 ,PM2 是具有内置负载均衡器的 Node.js 应用程序的生产流程管理器.它允许您使应 ...

  4. 使用pm2启动Node和Vue项目教程

    安装pm2 $ npm install -g pm2 命令行全局安装pm2 将pm2加入到命令中去 ? 1 2 3 4 ln -s /usr/local/src/node-v8.9.1-linux-x ...

  5. linux pm2 权限,pm2 部署 node的三种方法示例

    Node安装以及部署 去官网下载最新版本,分两种一种是源码,一种是编译后的文件.下面是官网下载地址: https://nodejs.org/en/download/current/  分不同的版本 w ...

  6. Node.js微服务 2 :基于Seneca和PM2构建Node.js微服务

    2.1 选择Node.js的理由 如今,Node.js已经成为国际上许多科技公司的首选方案.特别的,对于在服务器端需要非阻塞特性(例如Web Sockets)的场景,Node.js俨然成了最好的选择. ...

  7. 回顾Node文件路径

    回顾Node文件路径 起因 node中路径在很多地方都有使用,基础到不起眼.但有时候就是不起眼的东西,会在你不轻易间跳出来给你上一课. 想起来复习一下文件路径的起因,是因为最近整理了一下项目结构,调整 ...

  8. c#启动EXE文件(简单的)

    在程序执行中会遇到启动本软件的exe问,或者启用其它的exe文件,已达到执行某些操作的作用.下面是两种最常见的启动exe文件. 1.调用系统dll使用其提供的方法. 引用的dll, [csharp]  ...

  9. jdk12源代码文件_在JDK 11中启动单文件源代码程序

    jdk12源代码文件 JEP 330 –启动单文件源代码程序是即将发布的JDK 11(18.9)发行版中令人兴奋的功能之一. 此功能允许直接使用java解释器执行Java源代码. 源代码在内存中编译, ...

最新文章

  1. 二叉树的层次遍历 II[LeetCode-107]
  2. c++内存中字节对齐问题详解
  3. 工作与生活的平衡-一些955的良心公司
  4. 【原】webpack--loaders,主要解释为什么需要loaders和注意事项
  5. 1小时打造HaaS版小小蛮驴智能车
  6. python数据参数_python 的参数总结
  7. 数据结构-02-链表数据结构之双链表和循环链表
  8. 免费mysql_MySql 所有的版本都是免费的吗?
  9. 2021亚太杯数学建模竞赛
  10. 「Java代码审计」Java代码审计基础知识「一」
  11. 通过快捷指令给 Mac 添加右键菜单「使用 VSCode 打开」
  12. 渗透测试常见弱口令汇总
  13. 快门光圈感光度口诀_怎么利用光圈快门感光度
  14. java移位运算符(一个大于号,两个大于号,三个大于号)
  15. STM32RCT6芯片引脚的含义与作用
  16. Sawyer机器人助力ASM印刷电路板处理
  17. 机器学习在行业应用中的案例研究
  18. 中国普通民营企业当前营销的矛盾分析
  19. 灰度图像的形态学处理
  20. html页面确认按钮浮动,html的浮动按钮

热门文章

  1. 详解 Java NIO
  2. Java SSM1——Maven
  3. 某公司为本科以上学历的人重新分配工作,分配原则如下。 (1)如果年龄不满18岁,学历是本科,男性要求报考研究生,女性则担任行政工作; (2)如果年龄满18岁不满5o 岁,学历本科,不分男女,任中层领导
  4. 编写并调试一个单道处理系统的作业调度模拟程序_操作系统系列(2):操作系统发展历史...
  5. azure webjob java_使用 WebJobs 运行后台任务 | Azure Docs
  6. acs880 用户手册_华中数控、广州数控系统用户手册
  7. potplayer 多个进程_进程组、会话、控制终端概念,如何创建守护进程?
  8. mfc 固定编辑框输入上限和下限_MFC中编辑框数字限制范围
  9. 亚马逊产品描述计算机语言编辑,亚马逊Listing产品描述编辑讲解
  10. Spring MVC 流程图解析