美文网首页
pm2使用总结

pm2使用总结

作者: ITtian | 来源:发表于2018-10-25 14:49 被阅读65次

node本身是一个单线程应用。它的特点就是所有的方法都是串行一次执行,并且node没有能力像java一样去创建一个新的现成去实现异步,如果在执行I/O中遇到了阻塞,就会降低整个应用的执行效率。在应用和计算能力要求日益倍增的今天,单线程最大的弊端就是无法利用多核CPU带来的优势来提升运行效率

  • pm2的主要特性
    内建负载均衡(使用node cluster集群模块,可以使用服务器上的所有cpu)
    后台运行(node app.js 这种命令是直接在前台运行的,不稳定,很容易断)
    0秒停机重载(应该是上线升级的时候 不需要停机)
    停止不稳定的进程(避免无限循环)
    控制台检测

  • 安装

npm i pm2 -g
  • 用法
pm2 start build/ecosystem.config.js --env test -i 4           #也可以把‘Max’传递给start,正确的进程数目依赖于cpu的核心数目
pm2 start build/ecosystem.config.js --name my-api  # 命名进程,后面的参数其实都可以在config.js中定义
pm2 deploy build/ecosystem.config.js test  # 执行deploy部署
pm2 list                        # 显示所有进程状态
pm2 monit                       # 监控所有进程
pm2 logs                        # 显示所有进程日志
pm2 log name/id                 # 显示单个进程日志(name为进程名称)
pm2 stop all                    # 停止所有的进程
pm2 stop name/id                # 停止指定的进程
pm2 reload all                  # 0秒停机重载所有的进程
pm2 reload name/id              # 0秒停机重载指定的进程
                                # 0秒停机重载:
                                # 这项功能允许你重新载入代码而不用失去请求连接。
pm2 restart all                 # 重启所有的进程
pm2 restart name/id             # 重启指定的进程
pm2 delete all                  # 杀死所有的进程
pm2 delete name/id              # 杀死指定的进程

示例
pm2 list


pm2_list.png

pm2 monit
监视每个node进程的CPU和内存的使用情况


pm2_monit.png
  • app.js 解析(对应的地方会有注释)
const origin = typeof process.argv[2] != 'undefined' ? process.argv[2] : 'origin/dev';

module.exports = {
  /**
   * Application configuration section
   * http://pm2.keymetrics.io/docs/usage/application-declaration/
   * start 时会根据--env 后面的参数,决定注入不同的环境变量
   * pm2 start 的时候会执行apps里面的配置
   */
  apps: [
    {
      name: '进程的名字',
      script: 'server.js',  # 注入了环境变量后,执行的脚本
      log:  '/var/log/xm.log',
      error: '/var/log/xm-err.log',
      output: '/var/log/xm-out.log',
      instances: 4,  # 实例数
      exec_mode: 'cluster',
      env: {
        COMMON_VARIABLE: 'true',
      },
      env_test: {
        NODE_ENV: 'test',
        port: 4003,
      },
      env_development: {
        NODE_ENV: 'development',
        port: 4003,
      },
      env_production: {
        NODE_ENV: 'production',
        port: 3862,
      },
    },
  ],

  /**
   * Deployment section
   * http://pm2.keymetrics.io/docs/usage/deployment/
   * pm2 deploy的时候会执行deploy中的配置,会使用ssh的方式去登录到服务器上
   * post-deploy 为拉取代码之后 要执行的命令,若是不设置post-deploy字段的话,执行deploy命令就只是登录到服务器上拉取对应分支的代码
   */
  deploy: {
    test: {
      user: 'root',
      host: 'x.x.x.x',
      ref: origin,
      key: 'build/key',
      repo: 'git仓库地址',
      path: '代码在服务器上的路径',
      'post-deploy': 'npm run test_build && npm run test_start', 
      env: {
        NODE_ENV: 'test',
      },
    },
  },
};

相关文章

  • PM2-node 进程管理工具

    PM2官网 pm2进程管理工具使用总结 PM2是node进程管理工具,可以利用它来简化很多node应用管理的繁琐任...

  • pm2使用总结

    node本身是一个单线程应用。它的特点就是所有的方法都是串行一次执行,并且node没有能力像java一样去创建一个...

  • pm2

    centos7 安装nodejs 安装pm2 使用pm2

  • 2020前端面试

    1、怎么查看PM2日志? 使用pm2 list 查看当前运行的任务 使用pm2 log 任务名 2、http缓存 ...

  • pm2

    nodejs生产环境使用 pm2.json pm2 command pm2 start pm2.json pm2 ...

  • [读] pm2使用心得

    pm2使用心得

  • PM2开机自启动

    使用pm2启动node# pm2 start /home/wwwroot/web.js --watch dump这...

  • node的启动和调试

    使用pm2启动node项目,使用进程启动 先安装pm2插件 启动node 查看当前运行着几个项目 查看日志

  • PM2快速入门

    PM2使用手册 PM2是什么? PM2(Process Manager 2 )是具有内置负载均衡器的Node.js...

  • CentOS7使用pm2守护进程自启动

    找到项目的目录,使用pm2进行启动 执行命令pm2 start 进行启动 保存当前列表 执行命令pm2 save保...

网友评论

      本文标题:pm2使用总结

      本文链接:https://www.haomeiwen.com/subject/kplqtqtx.html