18
2016
03

nodejs插件PM2,还只是一匹野马![Eliminate]

上线Nodejs的产品,无论自己写Linux脚本还是用node的插件,都有必要把服务护航起来。起初我们一直用的是forever,除了监控文件更新的忽略文件夹功能稍微让人抓狂外,用来护航和环境切换确实不错。


但当你遇到PM2的时候,你会很快忘记forever,而爱上这个超级监控的开源插件,据说是继承了forever的优点,补充了forever的不足。我们就来看看PM2有多么的吸引人。


介绍

PM2 是一个带有负载均衡功能的 Node 应用的进程管理器。它的功能很多,这个链接包含所有详情http://pm2.keymetrics.io/ ,但我只说他突出的几点。

  1.  内建负载均衡(使用 Node cluster 集群模块), 这里也就是说我们不再需要自己写集群代码,就能让nodejs充分利用到各个CPU。

    $ pm2 start app.js -i max    # 根据有效CPU数目启动最大进程数目
    $ pm2 start app.js -i 3      # 启动3个进程
    $ pm2 start app.js -x        #用fork模式启动 app.js 而不是使用 cluster
  2. Monitoring,直接可以分分钟监控到nodejs各个节点的运行情况了,操作一条语句搞定

    $ pm2 monit

    pm2-monit.png

  3. pm2 list直接可以查看到运行状况。pm2-list.png


有这三个功能,已经完全有理由去研究了。研究完发现两个问题。

  1. 占CPU很高,特别访问在网站被访问的时候。

  2. CPU100%后不管3721给你重启了。

  3. 监控文件更改的忽略功能和forever一样蛋疼


也许我还没研究透,但到这里我的结论还是,PM2是一批野马,我没有足够的草原,我能等到你成熟,但在你成熟前,我继续和我的forever默默平凡下去。


最后附上一些常用的pm2命令

# Fork mode
$ pm2 start app.js #启动APP
$ pm2 start app.js --name my-api #自定义进程名

# Cluster mode
$ pm2 start app.js -i 0        # 以最大有效CPU数启动APP
$ pm2 start app.js -i max      # 同上

# Listing

$ pm2 list               # 显示所有PM2开启的进程状态
$ pm2 jlist              # 打印所有PM2开启的进程状态JSON信息
$ pm2 prettylist         # 打印所有PM2开启的进程状态格式化后的JSON信息

$ pm2 monit              # 监控所有进程

# Logs

$ pm2 logs [--raw]       # 显示所有进程的日志
$ pm2 flush              # 清空所有进程的log
$ pm2 reloadLogs         # 重启log

# Actions

$ pm2 stop all           # 停止所有进程(进程还在)
$ pm2 restart all        # 重启所有进程
$ pm2 delete all         # 删除所有进程(进程没了)

# Start all apps
$ pm2 start ecosystem.json

# Stop
$ pm2 stop ecosystem.json

# Restart
$ pm2 start ecosystem.json

## Or
$ pm2 restart ecosystem.json

# Reload
$ pm2 reload ecosystem.json

# Graceful Reload
$ pm2 gracefulReload ecosystem.json

# Delete from PM2
$ pm2 delete ecosystem.json


« 上一篇下一篇 »

评论列表:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。