Nodejs pm2 进程管理

滴~~~ 滴!滴!很有用的一个工具,用一次爽一次,一直用一直爽,不说了,开车了!!!

  • 内建负载均衡(使用Node cluster 集群模块)
  • 后台运行
  • 0秒停机重载,大概意思是维护升级的时候不需要停机,嗯~
  • 停止不稳定的进程(避免无限循环)
  • 控制台检测
  • 提供 HTTP API
  • 远程控制和实时的接口API ( Nodejs 模块,允许和PM2进程管理器交互 )

使用方法

npm install pm2 -g
$ pm2 start app.js              # 启动app.js应用程序
$ pm2 start app.js -i 4        # cluster mode 模式启动4个app.js的应用实例, 4个应用程序会自动进行负载均衡
$ pm2 start app.js --name="api" # 启动应用程序并命名为 "api"
$ pm2 start app.js --watch      # 当文件变化时自动重启应用
$ pm2 start script.sh          # 启动 bash 脚本
$ pm2 list                      # 列表 PM2 启动的所有的应用程序
$ pm2 monit                    # 显示每个应用程序的CPU和内存占用情况
$ pm2 show [app-name]          # 显示应用程序的所有信息
$ pm2 logs                      # 显示所有应用程序的日志
$ pm2 logs [app-name]          # 显示指定应用程序的日志
$ pm2 flush                     # 清空所有日志文件
$ pm2 stop all                  # 停止所有的应用程序
$ pm2 stop 0                    # 停止 id为 0的指定应用程序
$ pm2 restart all              # 重启所有应用
$ pm2 reload all                # 重启 cluster mode下的所有应用
$ pm2 gracefulReload all        # Graceful reload all apps in cluster mode
$ pm2 delete all                # 关闭并删除所有应用
$ pm2 delete 0                  # 删除指定应用 id 0
$ pm2 scale api 10              # 把名字叫api的应用扩展到10个实例
$ pm2 reset [app-name]          # 重置重启数量
$ pm2 startup                  # 创建开机自启动命令
$ pm2 save                      # 保存当前应用列表
$ pm2 resurrect                # 重新加载保存的应用列表
$ pm2 update                    # Save processes, kill PM2 and restore processes
$ pm2 generate                  # Generate a sample json configuration file

配置文件

module.exports = {
  apps: [
    {
      name: 'test', // 应用名称
      script: './app.js', // 启动文件地址
      cwd: './', // 当前工作路径
      watch: [
        // 监控变化的目录,一旦变化,自动重启
        'src',
        'build',
      ],
      ignore_watch: [
        // 忽视这些目录的变化
        'node_modules',
        'logs',
        'public',
      ],
      node_args: '--harmony', // node的启动模式
      env: {
        NODE_ENV: 'development', // 设置运行环境,此时process.env.NODE_ENV的值就是development
        ORIGIN_ADDR: 'https://www.lihuyong.com'
      },
      env_production: {
        NODE_ENV: 'production',
      },
      out_file: './logs/out.log', // 普通日志路径
      error_file: './logs/err.log', // 错误日志路径
      merge_logs: true,
      log_date_format: 'YYYY-MM-DD HH:mm Z',
    },
  ],
};

配置文件说明

Eg 描述
Name String App 程序名称
Script String App.js 主程序入口
Cwd String “/data/wwwroot/nodejs” 启动目录
Args String “-a 13 -b 12” 包含所有通过CLI脚本字符串参数
Interpreter S “/usr/bin/python” 启动脚本相 默认 nodejs
interpreter_args S ”–harmony”
node_args S interpreter_args 的别名
instances N -1 启动应用程序数目
exec_mode S “cluster” 启动模式 可以是 “cluster” or “fork” 默认 fork
watch S || Array true 启用监听功能
ignore_watch A [”[/\]./”, “node_modules”] 忽略的监听项
max_memory_restart S ‘150M’ 程序超过指定内存就重新启动
env Obj {“NODE_ENV”: “development”, “ID”: “42”} 环境变量
env_ obj {“NODE_ENV”: “production”, “ID”: “89”}
source_map_support Boolean true 默认true 启动 source Map
instance_var S “NODE_APP_INSTANCE”
log_date_format S “YYYY-MM-DD HH:mm Z” 日志的日期格式
error_file S 错误日志路径
out_file S 输出文件的路径
combine_logs Boolean
merge_logs Boolean combine_logs的别名
pid_file S
min_uptime S 最小运行时间
listen_timeout N 8000 如果程序没有监听 则会自动重启
kill_timeout N 1600
wait_ready

参考文档

https://juejin.im/post/5be406705188256dbb5176f9
http://pm2.keymetrics.io/docs/usage/application-declaration/

猜你喜欢

发表评论

最新发布