[转] Nodejs forever 替代工具 pm2 的介绍

[转] Nodejs forever 替代工具 pm2 的介绍

[Goodbye node-forever, hello PM2][pm2] [pm2]: (http://devo.ps/blog/2013/06/26/goodbye-node-forever-hello-pm2.html)

看了工具的介绍, 觉得蛮方便的, 就是不支持 CoffeeScript 让人有点抓狂:

Github: https://github.com/Unitech/pm2

npm install -g pm2

特点

PM2 觉得 Forever 有一些不好用的地方:

  • log 和监视的功能有限
  • 进程和集群管理有限
  • Aging codebase (升级 Node 容易导致应用失败)

目测比 Forever 好用一些… PM2 是前几个月刚写的, 还不完善: 列出来的计划有:

  • Remote administration/status checking,
  • Built-in inter-processes communication channel (message bus),
  • V8 GC 内存泄露检测,
  • Web 界面,
  • Persistent storage for monitoring data,
  • 邮件通知

Demo

盗链个截图:

然后本地安装尝试了一下:

➤➤ cat a.js 
// Generated by CoffeeScript 1.6.3
require('http').createServer(function(req, res) {
  return res.end('ok');
}).listen(3000);

➤➤ pm2 start a.js ⌬ PM2 Configuration : { script: ‘a.js’, name: ‘a’ } ⌬ PM2 You can write the current configuration by adding -w option ⌬ PM2 Process launched ┌────────┬────┬───────┬────────┬───────────┬─────────────────────┬──────────┬────────────────────────────────┐ │ Script │ id │ PID │ status │ Restarted │ Last restart │ memory │ err logs │ ├────────┼────┼───────┼────────┼───────────┼─────────────────────┼──────────┼────────────────────────────────┤ │ a.js │ 0 │ 27515 │ online │ 0 │ 2013-06-27 14:16:28 │ 8.469 MB │ /home/yong/.pm2/logs/a-err.log │

➤➤ pm2 list ⌬ PM2 Process listing ┌────────┬────┬───────┬────────┬───────────┬─────────────────────┬───────────┬────────────────────────────────┐ │ Script │ id │ PID │ status │ Restarted │ Last restart │ memory │ err logs │ ├────────┼────┼───────┼────────┼───────────┼─────────────────────┼───────────┼────────────────────────────────┤ │ a.js │ 0 │ 27515 │ online │ 0 │ 2013-06-27 14:16:28 │ 10.102 MB │ /home/yong/.pm2/logs/a-err.log │ └────────┴────┴───────┴────────┴───────────┴─────────────────────┴───────────┴────────────────────────────────┘ ⌬ PM2 PM2 log file path : /home/yong/.pm2/pm2.log (type pm2 logs to see log streaming)

⌬ PM2 monitoring :

a.js [27515] [ ] 0 % [||| ] 10.102 MB

➤➤ pm2 kill Daemon killed

➤➤ pm2 logs Launching daemon { online: true, success: true, pid: 27553 } [PM2 DAEMON (l0)] "/opt/s/demo/a.coffee -省略省略…


14 回复

[转] Nodejs forever 替代工具 pm2 的介绍

引言

随着 Node.js 应用程序的普及,越来越多的开发者需要一种可靠的方式来管理和监控他们的应用程序。Forever 是一个非常流行的工具,但它也存在一些局限性。最近,一个新的工具 PM2 被开发出来,旨在解决这些问题,并提供更强大的功能。

安装

首先,你需要通过 npm 全局安装 PM2:

npm install -g pm2

特点

比 Forever 更强大

PM2 相较于 Forever,提供了更多功能和更好的用户体验。具体来说:

  • 日志和监视:PM2 提供了更丰富的日志管理和监控功能。
  • 进程和集群管理:PM2 支持更灵活的进程管理和集群模式。
  • 代码库维护:PM2 的代码库更为现代化,减少了因升级 Node.js 版本而导致的应用故障风险。

示例使用

启动应用

假设你有一个简单的 Node.js 应用 a.js,你可以使用 PM2 来启动它:

// a.js
require('http').createServer((req, res) => {
  res.end('Hello, PM2!');
}).listen(3000);

使用 PM2 启动该应用:

pm2 start a.js

查看状态

启动后,可以使用以下命令查看应用的状态:

pm2 list

这将显示类似以下的信息:

┌────────┬────┬───────┬────────┬───────────┬─────────────────────┬──────────┬────────────────────────────────┐
│ Script │ id │ PID   │ status │ Restarted │ Last restart        │    memory │ err logs                       │
├────────┼────┼───────┼────────┼───────────┼─────────────────────┼───────────┼────────────────────────────────┤
│ a.js   │ 0  │ 27515 │ online │ 0         │ 2013-06-27 14:16:28 │ 10.102 MB │ /home/yong/.pm2/logs/a-err.log │
└────────┴────┴───────┴────────┴───────────┴─────────────────────┴───────────┴────────────────────────────────┘

查看日志

如果需要查看应用的日志,可以使用:

pm2 logs

关闭应用

要停止并关闭应用,可以使用:

pm2 kill

总结

PM2 不仅解决了 Forever 存在的一些问题,还提供了许多额外的功能。对于 Node.js 开发者来说,PM2 是一个非常值得尝试的工具。希望上述示例代码和说明能够帮助你快速上手使用 PM2。


哈哈

我的是windows XP系统,我用的是msysgit,结果在
npm install -g pm2
的时候,报我没有安装git,我去,啊。。多么痛的领悟…

github有windows客户端

卸載Windows ^o^

确实比forever功能丰富些

在Windows 7下一次就安装成功,爽了一下,于是运行看看:

Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。

x:>pm2 list

path.js:116 throw new TypeError(‘Arguments to path.resolve must be strings’); ^ TypeError: Arguments to path.resolve must be strings at Object.exports.resolve (path.js:116:15) at Object.<anonymous> (C:\Users\ooxx\AppData\Roaming\npm\node_modules\pm2\constants.js:8:23) at Module._compile (module.js:456:26) at Object.Module._extensions…js (module.js:474:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Module.require (module.js:364:17) at require (module.js:380:17) at Object.<anonymous> (C:\Users\ooxx\AppData\Roaming\npm\node_modules\pm2\lib\Satan.js:11:11) at Module._compile (module.js:456:26)

多么痛的领悟…

pm2 的stop 程序停了,端口还在占用,何解?

目测只能pm2 kill

不了解, 怎么重现这个?

好东西,马了

无解,这也是pm2非常烦的一点。我们只在线上环境使用pm2,测试和预发,都用forever。端口占用很头疼。

我们自己写了一个WEB管理控制台,deamon用的是cluster模式实现的,还写了一点IPC通信,这样登录后台可以看到各子进程的PID、工作状态、内存占用、数据库连接占用、连接排队、HTTP会话数、TCP会话数、Cache使用率、Cache命中率等,管理控制台还记录了每个业务模块的调用次数及调用耗时用于性能调优,deamon进程使用node-schedule每10分钟记录一次子进程服务状态同时生成监控页面再通过shell汇总和压缩。好像我们自己有点重复造轮子的感觉。

PM2 是一个功能强大的 Node.js 进程管理工具,可以替代 forever 来管理和监控 Node.js 应用。以下是使用 PM2 的一些基本操作示例。

安装 PM2

首先需要全局安装 PM2:

npm install -g pm2

启动应用

启动一个 Node.js 应用非常简单:

pm2 start app.js

如果你想指定应用名称,可以用 -n 参数:

pm2 start app.js -n myapp

列出进程

查看当前运行的所有 PM2 进程:

pm2 list

查看日志

查看应用的日志信息:

pm2 logs

监控应用

PM2 可以实时监控应用的内存使用情况和 CPU 使用率:

pm2 monit

重启应用

如果需要重启应用:

pm2 restart myapp

停止应用

停止某个应用:

pm2 stop myapp

删除应用

从 PM2 中删除并停止应用:

pm2 delete myapp

其他特性

PM2 还支持集群模式,可以轻松地将应用扩展到多核系统中:

pm2 start app.js -i max

这样可以自动将应用分布到多个 CPU 核心上运行。

通过这些简单的命令,你可以有效地管理和监控你的 Node.js 应用,而无需担心由于应用崩溃或意外退出而导致的服务中断。

回到顶部