PM2初识入门

375 阅读2分钟

这是我参与更文挑战的第21天,活动详情查看: 更文挑战

PM2

PM2是node进程管理工具

作用

简化node应用管理的繁琐任务,如性能监控,自动重启,负载均衡

安装

npm install -g pm2

pm2项目目录介绍

├── $HOME/.pm2  
	will contain all PM2 related files
├── $HOME/.pm2/logs
	will contain all applications logs
├── $HOME/.pm2/pids
	will contain all applications pids
├── $HOME/.pm2/pm2.log
	PM2 logs
├── $HOME/.pm2/pm2.pid
	PM2 pid
├── $HOME/.pm2/rpc.sock
	 Socket file for remote commands
├── $HOME/.pm2/pub.sock
	Socket file for publishable events
├── $HOME/.pm2/conf.js
	PM2 Configuration

入门

pm2.keymetrics.io/docs/usage/…

常用命令

  • 启动

    • pm2 start app.js --watch -i 2
    • 参数说明
      • --watch:监听应用目录的变化,一旦发生变化,自动重启。如果要精确监听、不见听的目录,最好通过配置文件。
      • -i --instances:启用多少个实例,可用于负载均衡。如果-i 0或者-i max,则根据当前机器核数确定实例数目。
      • --ignore-watch:排除监听的目录/文件,可以是特定的文件名,也可以是正则。比如--ignore-watch="test node_modules "some scripts""
      • -n --name:应用的名称。查看应用信息的时候可以用到。
      • -o --output :标准输出日志文件的路径。
      • -e --error :错误输出日志文件的路径。
      • --interpreter :the interpreter pm2 should use for executing app (bash, python...)。比如你用的coffee script来编写应用。
    • 重启 pm2 restart app.js
    • 停止 pm2 stop app_name|app_id 停止特定应用 pm2 list 可获得app_name和app_id pm2 stop all 停止所有
    • 删除 pm2 delete app_id pm2 delete all
    • 查看进程状态 pm2 list
    • 查看某个进程的信息 pm2 list app_id
  • 配置文件

  • 说明

    • 配置文件里的设置项,跟命令行参数基本是一一对应的。
    • 可以选择yaml或者json文件,就看个人洗好了。
    • json格式的配置文件,pm2当作普通的js文件来处理,所以可以在里面添加注释或者编写代码,这对于动态调整配置很有好处。
    • 如果启动的时候指定了配置文件,那么命令行参数会被忽略。(个别参数除外,比如--env)
  • 例子

wpsENtYhG.jpg

  • 自动重启

    • pm2 start app.js --watch
  • 环境切换

  • 负载均衡

    • pm2 start app.js -i 3 # 开启三个进程
    • pm2 start app.js -i max # 根据机器CPU核数,开启对应数目的进程
  • 日志查看

    pm2 logs

  • 指令tab补全

  • 开机自动启动

    • 通过pm2 save保存当前进程状态。
    • 通过pm2 startup [platform]生成开机自启动的命令。(记得查看控制台输出)
    • 将步骤2生成的命令,粘贴到控制台进行,搞定。
  • 传入node args

    • 命令行
      • pm2 start app.js --node-args="--harmony"
  • 配置文件

wpskJk7Vc.jpg

  • 远程部署

  • 监控monitor

    • pm2 monitor
  • 内存使用超过上限自动重启

    • pm2 start big-array.js --max-memory-restart 20M
  • 更新pm2

    • $ pm2 save # 记得保存进程状态
    • $ npm install
    • pm2 -g $ pm2 update
  • pm2+nginx

  • 在线监控系统

  • pm2编程接口

  • 模块扩展系统