第 3 方库之一很少表现出奇怪的行为,并使应用程序进入一些无法恢复的奇怪状态。所以我做了一个逃生舱来捕捉错误,然后我调用 process.exit(0)
希望 Heroku 会重新启动它。
今天是第一次发生这种情况,不幸的是,Heroku 花了大约 10 分钟才决定重新启动测功机。它不断向 error code=H10 desc="App crashed"
发送垃圾邮件一路上。
有什么更好的方法来处理这个问题,以便 Heroku 立即重新启动?我想避免调用 Heroku API,这是一种奇怪的解决方法。
请您参考如下方法:
首先,我认为您的“逃生舱”不是处理 Node 应用程序“奇怪状态”的好习惯。您应该正面解决问题,可能会删除该 3rd 方库并确保您的应用程序始终按预期工作。
话虽如此,“Heroku 花了大约 10 分钟”这一事实是因为您可能正在使用他们的“通用运行时”。如果您希望您的服务在出现故障时立即重新启动,您将不得不考虑在其“私有(private)空间运行时”中运行它们。
来自 the docs :
The Common Runtime implements an incremental backoff policy for crashing dynos
The Private Spaces Runtime does not have a backoff policy. When a dyno crashes it will be continuously restarted with no cool-off period.