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
入门
http://pm2.keymetrics.io/docs/usage/quick-start
常用命令
启动
- 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)
- 例子
自动重启
- 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"
- 配置文件
远程部署
监控monitor
- pm2 monitor
内存使用超过上限自动重启
- pm2 start big-array.js --max-memory-restart 20M
更新pm2
- $ pm2 save # 记得保存进程状态
- $ npm install
- pm2 -g $ pm2 update
pm2+nginx
- 在线监控系统
- pm2编程接口
- 模块扩展系统