【问题标题】:How to restart my node js app when the CPU usage reach 100% on Amazon EC2 and the server stops当 Amazon EC2 上的 CPU 使用率达到 100% 并且服务器停止时,如何重新启动我的节点 js 应用程序
【发布时间】:2014-11-16 13:53:21
【问题描述】:

目前我正在使用forever 处理 EC2 上的崩溃等问题,但我想要一些方法来管理在服务器上的 CPU 使用率达到 100% 时重新启动应用程序。

它现在的工作方式是,当 CPU 使用率达到 100% 时,应用程序停止运行,如果我没有注意到亚马逊在我的邮件中发送的警报,应用程序将保持关闭状态,直到我手动重新启动 再次使用forever

我想要的是一种方法,当 cpu 使用率达到 90% 或更高时它会重新启动应用程序,我应该使用其他模块而不是永远使用其他模块吗?如果是的话,有什么建议吗?

【问题讨论】:

  • 我当然希望您也在研究导致 100% CPU 使用率的根本原因,因为这似乎是更大的问题。如果您只是重新启动一个进程,一旦它再次启动就会立即恢复到 100% 的 CPU 使用率,那对您没有任何好处。
  • 是的,你是对的,但问题是它不是一个常规问题,现在它只是在奇怪的时间(比如每 3 或 4 天)发生一次峰值。

标签: node.js ubuntu amazon-web-services amazon-ec2 forever


【解决方案1】:

我建议您减少 CPU 使用率但是,我使用类似的技巧,但在内存使用率很高时重新启动(由于非常小的内存泄漏)

你需要模块“使用”

var usage       = require('usage');

然后:

CHECK_CPU_USAGE_INTERVAL    = 1000*60; // every minute
HIGH_CPU_USAGE_LIMIT        = 90; // percentage

autoRestart = setInterval(function()
{
    usage.lookup(process.pid, function(err, result) 
    {
        if(!err)
        {
            if(result.cpu > HIGH_CPU_USAGE_LIMIT)
            {
                // log
                console.log('restart due to high cpu usage');

                // restart because forever will respawn your process
                process.exit();
            }
        }
    });
}, CHECK_CPU_USAGE_INTERVAL);

【讨论】:

  • 不幸的是它没有工作,因为应用程序在达到 100% cpu 时似乎停止运行。
  • 所以你必须找到高cpu消耗的根源并解决它:)
  • 您有什么想法可以帮助解决这个问题吗? :) 目前我不知道问题的原因是什么。
  • 取决于这么多事实,尝试找到可能的无限循环或执行繁重过程的代码等。
  • @KarimTarek 如果这不起作用,它可能会在不到一分钟(检查期)内从 90% 变为 100% - 您可以将检查期缩短到例如 5 秒,并有更好的机会捕捉并重新开始。
【解决方案2】:

永远签出: https://github.com/nodejitsu/forever

您可以将它用于所描述的确切情况。我想我会试着弄清楚你为什么要达到最大 CPU。

【讨论】:

  • 确实,我已经永远使用了,但永远只是在服务器达到最大 CPU (100%) 时不重新启动应用程序,它只是显示该进程在永远运行的列表中,但应用程序不是。每次发生这种情况时,我都必须手动使用永远重启。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-16
  • 2022-07-20
  • 2016-12-01
  • 1970-01-01
  • 2021-09-08
相关资源
最近更新 更多