我有一个Ruby应用程序,故意在轮询队列的无限循环中运行。该应用程序在AWS实例中运行。我从bash脚本启动应用程序。我的AWS实例监视器返回超时,并显示红色运行状况,我怀疑是因为我的应用程序处于循环中。
这种情况如何处理?它应该在ruby应用程序中处理吗?或者是启动它的bash脚本?
答案 0 :(得分:2)
如果你有一个非常紧凑的循环并且它永远不会空闲或阻塞,它可能会消耗这么多的CPU以至于监视失败。我不认为这是可能的,但你可以通过停止循环来测试它,看看是否能修复它。
如果是,则添加一些空闲时间。如果您正在检查的队列在SQS中,您可以在每次轮询时指定最多45秒的等待时间,以便它在那么长时间内阻塞,或者直到消息准备就绪,以先到者为准。否则,每隔一段时间添加一次睡眠 - 也许每次轮询或每隔十次。