管理在无限循环中运行的Ruby应用程序

时间:2014-07-19 14:09:07

标签: ruby bash amazon-web-services

我有一个Ruby应用程序,故意在轮询队列的无限循环中运行。该应用程序在AWS实例中运行。我从bash脚本启动应用程序。我的AWS实例监视器返回超时,并显示红色运行状况,我怀疑是因为我的应用程序处于循环中。

这种情况如何处理?它应该在ruby应用程序中处理吗?或者是启动它的bash脚本?

1 个答案:

答案 0 :(得分:2)

如果你有一个非常紧凑的循环并且它永远不会空闲或阻塞,它可能会消耗这么多的CPU以至于监视失败。我不认为这是可能的,但你可以通过停止循环来测试它,看看是否能修复它。

如果是,则添加一些空闲时间。如果您正在检查的队列在SQS中,您可以在每次轮询时指定最多45秒的等待时间,以便它在那么长时间内阻塞,或者直到消息准备就绪,以先到者为准。否则,每隔一段时间添加一次睡眠 - 也许每次轮询或每隔十次。