pm2的使用与总结,一款node.js服务器管工具

时间: 2017-10-30阅读: 2436标签: pm2

Node服务常使用的工具是pm2和forever,通过它可以是node的服务在后台运行。如果站点访问量不大,不需要监控,可以通过forever来管理多个站点。这边文章将介绍pm2的主要用法。通过pm2对node进程的管理,可以简化很多繁琐的任务,例如性能监控、自动重启、负载均衡等,同时node的使用也非常简单。

pm2全局安装

npm install pm2 -g 

启动服务

pm2 start app.js -i [n] --name [name]  // 入口文件是app.js,启动n个进程,名字命名为name。

pm2 start app.js --max_memory_restart 1024M : 当内存超过1024M时自动重启。 如果工程中有比较棘手的内存泄露问题,这个算是一个折中方案。

重启服务  

 npm restart [name or id]  

 npm reload [name or id] //和rastart功能相同,但是可以实现0s的无缝衔接;如果有nginx的使用经验,可以对比nginx reload指令。

停止服务

pm2 stop  [name or id]  

杀死进程  

pm2 delete [name or id]

pm2 delete all//删除所有的进程 

进程列表

pm2 list //列出由pm2管理的所有进程信息,还会显示一个进程会被启动多少次,状态,异常等。

服务监控  

pm2 monit


配置pm2启动文件  

生成配置文件  

pm2 ecosystem  configpm.json

通过配置文件启动服务  

pm2 startOrRestart configpm.json

文件配置

{
 "apps": [
 {
  "name": "mywork",
  "cwd": "/srv/node-app/current",
  "script": "bin/www",
  "log_date_format": "YYYY-MM-DD HH:mm Z",
  "error_file": "/var/log/node-app/node-app.stderr.log",
  "out_file": "log/node-app.stdout.log",
  "pid_file": "pids/node-geo-api.pid",
  "instances": 6,
  "min_uptime": "200s",
  "max_restarts": 10,
  "max_memory_restart": "1M",
  "cron_restart": "1 0 * * *",
  "watch": false,
  "merge_logs": true,
  "exec_interpreter": "node",
  "exec_mode": "fork",
  "autorestart": false,
  "vizion": false
 }
 ]
}

说明  

apps:json结构,apps是一个数组,每一个数组成员就是对应一个pm2中运行的应用

name:应用程序名称

cwd:应用程序所在的目录

script:应用程序的脚本路径

error_file:自定义应用程序的错误日志文件

out_file:自定义应用程序日志文件

pid_file:自定义应用程序的pid文件

instances:启用多少个实例,可用于负载均衡。如果-i 0或者-i max,则根据当前机器核数确定实例数目。

min_uptime:最小运行时间,这里设置的是60s即如果应用程序在60s内退出,pm2会认为程序异常退出,此时触发重启max_restarts设置数量

max_restarts:设置应用程序异常退出重启的次数,默认15次(从0开始计数)

cron_restart:定时启动,解决重启能解决的问题

watch:是否启用监控模式,默认是false。如果设置成true,当应用程序变动时,pm2会自动重载。这里也可以设置你要监控的文件。

merge_logs:日志

exec_interpreter:应用程序的脚本类型,这里使用的shell,默认是nodejs

exec_mode:应用程序启动模式,这里设置的是cluster_mode(集群),默认是fork

autorestart:启用/禁用应用程序崩溃或退出时自动重启

vizion:启用/禁用vizion特性(版本控制)

总结:pm2的文档就写到这里了,使用比较简单,看一篇基本就可以上手了。