美文网首页
PM2进程管理

PM2进程管理

作者: Pretty_Boy | 来源:发表于2018-12-04 16:17 被阅读77次

    PM2 process manager for Node.js
    2018/12/4 PM2 => 3.2.2

    Installation

    npm install pm2 -g
    

    基础命令

    pm2 start <js|json>  // 启动并添加一个进程
    pm2 ls  // 显示所有进程
    pm2 delete <name|id|script|all|json|stdin>  // 停止并删除指定的进程
    // 此进程使用kill 无效,因为存在守护进程,所以手动kill掉某个进程后会自动重启
    pm2 stop <id|name|all|json|stdin>  // 停止进程
    pm2 start <id|name|all|json|stdin>  // 启动指定进程
    pm2 restart <id|name|all|json|stdin>  // 重启指定进程 也可使用正则匹配多个进程
    

    日志

    // 1 实时查看某进程日志
    pm2 logs <id|name|all>
    // 2 当没有指定日志目录时,默认在~/.pm2/logs中存放这所有进程日志历史
    
    pm2 flush 清空所有历史应用日志
    

    负载均衡

    pm2 start app.js -i <number | max> // 启动指定数量的子进程
    

    配置文件

    1. 使用Generator
    pm2 init  // 生成 ecosystem.config.js
    // 此时 pm2 start  ||  pm2 start ecosystem.config.js 即可使用配置启动
    
    // ecosystem.config.js
    // 配置多个环境
    module.exports = {
      apps : [{
        name: "app",
        script: "./app.js",
        // log start
        output: "./out.log",
        error: "./error.log",
        log: "./combined.outerr.log",
        log_type: "json", // 将日志按json打出
        log_date_format: "YYYY-MM-DD",
        merge_logs: true,
        // log end
        // output:  is only standard output (console.log)
        // error: is only error output (console.error)
        // log combines output and error, disabled by default
    
        // balancing start
        instances: "max",
        // balancing end
    
        // watch and reload
        watch: true,
        env: {
          NODE_ENV: "development",
        },
        env_production: {
          NODE_ENV: "production",
        }
      }]
    }
    // 通过--env 指定环境 
    // 当进程被启动后 其环境则一般不可变,可通过--update-env 强制改变环境
    
    1. 自己设置配置文件 app.json
    [{
        "name": "app",
        "script": "./app.js",
        "error_file": "/data/app-logs/argus/err.log",
        "out_file": "/data/app-logs/argus/out.log",
        "exec_mode": "cluster_mode",  // 单点/集群
        "listen_timeout" : 10000,
        "log_date_format" :"YYYY-MM-DD HH:mm:ss.SSS",
        "env": {
            "NODE_ENV": "production"
        }
    }]
    

    保存进程列表

    // ~/.pm2/dump.pm2  ||  ~/.pm2/dump.pm2.bak
    pm2 dump | save  // 保存当前的进程列表
    pm2 resurrect   // 恢复之前保存的进程列表
    

    1. 进程列表用json格式输出
     pm2 prettylist     // print json in a prettified JSON
    
    1. 配置文件具体参数

    https://pm2.io/doc/en/runtime/reference/ecosystem-file/

    1. 配置文件中的部署deploy 使用ssh

    https://pm2.io/doc/en/runtime/guide/easy-deploy-with-ssh/

    1. PM2 源码

    https://github.com/Unitech/pm2

    相关文章

      网友评论

          本文标题:PM2进程管理

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