• pm2:node进程管理工具


    https://pm2.keymetrics.io/docs/usage/quick-start/

    1. pm2 -version 查看版本
    2. pm2 start app.js --name name 启动并命名为name,没有命名的话后续可以用id替代name
      pm2 start app.js --name name运行自己顶名称的进程
      pm2 start app.js --watch 当文件变化时自动重启应用
      pm2 start yarn -- run  运行yarn命令,-- 后是相关scripts;也可以使用npm
      
      • 1
      • 2
      • 3
    3. pm2 list 查看所有启动的应用列表
    4. pm2 monit 显示每个应用程序的CPU和内存占用情况
    5. pm2 show [app-id/app-name] 显示指定应用程序的所有信息
    6. pm2 log 显示应用程序的日志信息
    7. pm2 log [app-id/app-name] 显示指定应用程序的日志信息
    8. pm2 flush 清空所有日志文件
    9. pm2 stop all 停止所有应用程序
    10. pm2 stop [app-id/app-name] 停止指定应用程序
    11. pm2 restart all 重启所有应用程序
    12. pm2 restart [app-id/app-name] 重启指定应用程序
    13. pm2 delete all 关闭并删除所有应用程序
    14. pm2 delete [app-id/app-name] 删除指定的应用程序
    15. pm2 reset [app-id/app-name] 重置重启数量
    16. pm2 startup 创建开机自启动命令
    17. pm2 save 保存当前应用列表
    18. pm2 resurrect 重新加载保存的应用列表
    19. pm2 update 保存进程,杀死并重启进程,一般用于更新pm2版本
    20. pm2 ecosystem 生成一个示例json配置文件,运行配置文件pm2 start ecosystem.config.js --env production
    • 基础类
      • name:进程名
      • script:node启动文件的路径
      • cwd :项目所在的目录
      • args :通过命令行传递给node启动文件的参数
      • interpreter :编译器的绝对路径(默认node)
      • interpreter_args :传给编译器的参数
      • node_args:传给node的参数
    • 进阶类
      • instances :进程数
      • exec_mode :进程的模式(cluster或fork)
      • PS: cluster模式利用node的child_process模块孵化多个子进程,主进程监听端口,子进程只和主进程通信,从而达到单个端口多个进程;通过轮转方式实现负载均衡
      • watch :布尔值或文件数组,允许开启监听文件改动重启
      • ignore_watch :不监听的文件
      • max_memory_restart :超过该内存就自动重启
      • env :应用中的默认环境变量
      • env_ :命令行中可传入的环境变量,覆盖默认环境变量
      • source_map_support :默认true,支持sourcemap文件
    • 日志类
      • log_date_format :日志时间格式
      • error_file :错误日志存放路径
      • out_file :全部日志存放路径
      • combine_logs:是否将不同id的进程日志合并
      • merge_logs:同上
    • 控制流
      • min_uptime :pm2认为进程在线的最小时长
      • listen_timeout :如果app没有发送ready信号,间隔多长时间reload
      • kill_timeout :从告诉进程要关闭到强制关闭进程的间隔时间
      • wait_ready:是否等待进程发送ready信号
      • max_restarts :最大不稳定重启次数(不稳定指的是小于1s或者小于的min_uptime重启)
      • restart_delay:进程掉线后,等待多长时间重启
      • autorestart: 是否开启自动重启
      • 配置项实践中需要注意的内容
      • script:若使用cluster模式,必须是启动文件入口,不可通过npm启动
      • max_restarts:指不稳定重启,即小于1s或
      • min_uptime的重启,要结合
      • min_uptime配置才起效
      • listen_timeout:当cluster模式时,这个值要大于一个进程启动所需时间,否则reload时会造成短暂的服务不可用
      module.exports = {
        // apps是一个json结构的数组 ,每一个数组成员对应一个pm2中运行的应用
        apps : [
          {
            // 应用程序名称
            name: 'nuxt-snow',
            // 执行文件
            script: 'index.js',
            // 应用程序所在的目录
            cwd: './',
            // 传递给脚本的参数
            args: '',
            // 指定的脚本解释器
            interpreter: '',
            // 传递给解释器的参数
            interpreter_args: '',
            // 是否启用监控模式,默认是false。如果设置成true,当应用程序变动时,pm2会自动重载。这里也可以设置你要监控的文件。
            watch: true, // watch: './',
            // 不用监听的文件
            ignore_watch: [
              'node_modules',
              'logs'
            ],
            // 应用程序启动模式,这里设置的是 cluster_mode(集群),默认是fork
            exec_mode: 'fork',
            // 应用启动实例个数,仅在cluster模式有效 默认为fork;或者 max
            instances: 1,
            // 最大内存限制数,超出自动重启
            max_memory_restart: 8,
            // 自定义应用程序的错误日志文件(错误日志文件)
            error_file: './logs/app-err.log',
            // 自定义应用程序日志文件(正常日志文件)
            out_file: './logs/app-out.log',
            // 设置追加日志而不是新建日志
            merge_logs: true,
            // 指定日志文件的时间格式
            log_date_format: 'YYYY-MM-DD HH:mm:ss',
            // 最小运行时间,这里设置的是60s即如果应用程序在* 60s内退出,pm2会认为程序异常退出,此时触发重启 max_restarts设置数量,应用运行少于时间被认为是异常启动
            min_uptime: '60s',
            // 设置应用程序异常退出重启的次数,默认15次(从0开始计数),最大异常重启次数,即小于min_uptime运行时间重启次数;
            max_restarts: 10,
            // 启用/禁用应用程序崩溃或退出时自动重启,默认为true, 发生异常的情况下自动重启
            autorestart: true,
            // 定时启动,解决重启能解决的问题,crontab时间格式重启应用,目前只支持cluster模式;
            cron_restart: '',
            // 异常重启情况下,延时重启时间
            restart_delay: '60s',
            // 环境配置
            // env: {
            //   // 公共变量
            //   COMMON_VARIABLE: true
            // },
            // 生产环境配置
            // $ pm2 start app.js --env
            env: {
              // 环境参数,当前指定为生产环境 process.env.NODE_ENV
              NODE_ENV: 'production',
              // 当前环境接口地址,如果不用可不配置 process.env.REMOTE_ADDR
              REMOTE_ADDR: 'http://www.abc.com/'
            },
            // 开发环境配置
            // $ pm2 start app.js --env_dev
            env_dev: {
              // 环境参数,当前指定为开发环境 process.env.NODE_ENV
              NODE_ENV: 'development',
              // 当前环境接口地址,如果不用可不配置 process.env.REMOTE_ADDR
              REMOTE_ADDR: 'http://www.abc.com/'
            },
            // 测试环境配置
            // $ pm2 start app.js --env_test
            env_test: {
              // 环境参数,当前指定为测试环境 process.env.NODE_ENV
              NODE_ENV: 'test',
              // 当前环境接口地址,如果不用可不配置 process.env.REMOTE_ADDR
              REMOTE_ADDR: 'http://www.abc.com/'
            }
          }
        ],
       
        // 环境部署
        deploy : {
        
          production : {
            // ssh的用户名,登录远程服务器的用户名
            user : 'snow',
            // 要发布的机器,远程服务器的IP或hostname,此处可以是数组同步部署多个服务器
            host : '10.0.0.0',
            // 服务器端口
            port : 3000,
            // 要发布的代码分支,远端名称及分支名
            ref  : 'origin/master',
            // 代码Git仓库地址
            repo : 'git@gitlab.dzm.net:dzm/nuxt-test',
            // 服务器存储代码地址,远程服务器部署目录,需要填写user具备写入权限的目录,也就是服务器存放上面git库代码的地方
            path : '/usr/local/var/www/production',
            // ssh权限配置
            // 'ssh_options': 'StrictHostKeyChecking=no',
            'ssh_options': ['StrictHostKeyChecking=no', 'PasswordAuthentication=no'],
            // 1、在 setup 前触发,如安装 git
            'pre-setup': '',
            // 2、在 setup 后触发,如做一些其他配置
            'post-setup': '',
            // 3、在 deploy 前触发,执行本地脚本
            'pre-deploy-local': '',
            // 4、在 deploy 前触发,执行远程脚本
            'pre-deploy': 'git fetch --all',
            // 5、在 deploy 后触发,执行远程脚本,如 npm install,部署后需要执行的命令
            // 'post-deploy' : 'npm install && pm2 startOrRestart ecosystem.config.js --env production',
            'post-deploy' : 'npm install && pm2 reload ecosystem.config.js --env production',
            // 环境变量
            'env'  : {
              // 指定为生成环境
              'NODE_ENV': 'production'
            }
          }
        }
      };
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
      • 28
      • 29
      • 30
      • 31
      • 32
      • 33
      • 34
      • 35
      • 36
      • 37
      • 38
      • 39
      • 40
      • 41
      • 42
      • 43
      • 44
      • 45
      • 46
      • 47
      • 48
      • 49
      • 50
      • 51
      • 52
      • 53
      • 54
      • 55
      • 56
      • 57
      • 58
      • 59
      • 60
      • 61
      • 62
      • 63
      • 64
      • 65
      • 66
      • 67
      • 68
      • 69
      • 70
      • 71
      • 72
      • 73
      • 74
      • 75
      • 76
      • 77
      • 78
      • 79
      • 80
      • 81
      • 82
      • 83
      • 84
      • 85
      • 86
      • 87
      • 88
      • 89
      • 90
      • 91
      • 92
      • 93
      • 94
      • 95
      • 96
      • 97
      • 98
      • 99
      • 100
      • 101
      • 102
      • 103
      • 104
      • 105
      • 106
      • 107
      • 108
      • 109
      • 110
      • 111
      • 112
      • 113
      • 114
      • 115
      • 116
      • 117
    1. 进程相关字段说明
      id // 进程id 标识作用 用于其他命令的指向
      name // 进程标识 用于其他命令的指向
      namespace // 环境名称 
      version // 版本
      mode //进程模式,cluster或fork。cluster有多个进程,而fork只有一个
      pid // 进程id  标识作用
      uptime // 运行时间
      ↺  // 重启次数
      status // 进程是否在线
      cpu // cpu的占用率
      mem // 内存占用大小
      user // 启动用户名 
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
  • 相关阅读:
    react基础
    细数 GameFi 模型发展 ,未来仍可期?
    Vue----计算属性
    5月13号作业
    clion出现createprocess error=193, %1 不是有效的 win32 应用程序
    yolov5和yolov7之实例分割训练
    Python 数据分析之基础
    batch norm 中 track_running_stats 的探索
    基于spring-boot-starter-actuator不同版本(2.1.3和2.3.5)在K8s中做就绪存活检查相关配置的差异
    Android Audio实战——静音设置(十八)
  • 原文地址:https://blog.csdn.net/randy521520/article/details/133514954