弹性 Beanstalk Node.Js 需要 PM2 或 Forever 吗?

10

在我的本地节点服务器上,任何未捕获的异常都会导致服务器崩溃,并需要手动重新启动。因此,在本地运行时使用了forever或pm2来管理。 但是,在AWS Elastic Beanstalk中使用Node.js环境的开发服务器则不同。尽管它记录未捕获的异常并将其抛出,但它不会终止。即使它终止了,也会自动重启。 所以,在AWS Elastic Beanstalk环境中是否需要PM2或Forever来保持Node.js一直运行?


1
Node.js 进程完全由 Elastic Beanstalk 管理,但您可以使用 .ebextensions/web.config 文件自定义实例。高级环境自定义 - Ezzat
Elastic Beanstalk是否会永久地保持Node.js?重启是如何发生的? - Janier
1
根据我的经验,它确实会这样做。当进程结束时,它会立即重新启动。这会导致一些情况,例如如果启动时出现错误,它将像疯子一样吞噬实例的 CPU 信用,因为它只是在循环中重新启动 node.js 应用程序。此外,您应该有一个 /health 路由,当 EB 检测到健康状态失败时,它会替换/重启您的实例。这可以解决整个操作系统崩溃/冻结的情况,例如当您的系统内存耗尽时。 - Capaj
2个回答

3

我的建议:

相比于EBS,PM2有许多优势:

  1. 使用PM2,您可以控制和管理许多应用程序(进程),这些进程可以在不同的平台上运行(JS、Ruby等)。而在EBS中,您一次只能部署一个应用程序到EBS上。

  2. PM2直接控制所有正在运行的进程,您可以重新加载/重启/停止一个进程并保持其他进程不受影响。

EBS只能为您解决一些问题,例如崩溃后自动重启或限制内存泄漏。但是,PM2可以帮助您控制许多其他问题(优雅地重新加载、实现零延迟重新加载等)。 现在,我对EBS的完整功能可能有些错误,它可能提供更多功能。


0

3
我的问题是,在EB中是否有必要使用PM2,因为每当我的应用程序因未捕获的异常而失败时,它都会被弹性Beanstalk自动启动。 - Janier

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接