gpt4 book ai didi

pm2 - 当服务器进程被杀死时如何重新启动 PM2 本身?

转载 作者:行者123 更新时间:2023-12-02 03:40:17 25 4
gpt4 key购买 nike

我使用 PM2 来运行我的 Node.js 应用程序。它工作正常,但是,有时当我的应用程序超出内存限制时,我的网络托管提供商 WebFaction(你好!)会杀死我的共享服务器部分上的所有进程(它实际上是一个基于 java 的 Neo4j )图形数据库正在这样做,我正在努力解决这个问题)。

当发生这种情况时,PM2 出于某种原因认为它仍在运行,即使我的应用程序未在线(同时使用 cron 重新启动数据库)。

如何确保 PM2 “知道”发生类似情况并重新启动我的 Node.js 应用程序,即使它认为它仍在运行?

最佳答案

使用supervisormonit是推荐的更好的方法。

但是,一个对我有用的快速而肮脏的黑客方法是使用 pm2-save and pm2-resurrect与 cron 结合使用的实用程序。

我运行了 pm2 save 来保存我想要继续运行的所有节点进程的快照。然后,当我以 pm2 和 Node 应用程序运行的 linux 用户身份登录时(例如,在我的例子中,Amazon Linux 上的 ec2-user),我将其放入我的 crontab 中(使用 crontab -e):

* * * * * pm2 resurrect

这告诉 cron 调度程序每天每分钟运行 pm2 Renaissance。这确保了即使 Linux 内核杀死 pm2 本身(当我的小 t2.micro OOM 时经常发生),最多也会有 60 秒的停机时间:cron 将确保 pm2 和我的 NodeJS应用程序每分钟自动复活(如有必要)。

pm2 Renaissance 在这里非常有用,因为它是幂等的,您可以安全地一遍又一遍地运行它,并且它不会重新启动任何正在运行的进程或导致重新运行中断。它只是检查所需的节点应用程序是否正在运行,如果正在运行,则不会执行任何操作。但是,如果它们尚未运行,它将使用 pm2 save 之前记录的配置来启动这些应用程序。

关于pm2 - 当服务器进程被杀死时如何重新启动 PM2 本身?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48865258/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com