我们正在Heroku上运行NodeJS服务器。我们想知道如果应用程序崩溃,heroku是否会重新启动应用程序。免费版和付费版之间会有不同的行为吗?
答案 0 :(得分:32)
会的。多次,然后“冷静”十分钟,然后再试一次。来自文档:
Heroku的dyno重启策略是尝试通过每十分钟生成一次新dynos来重启崩溃的dynos。这意味着如果您推送阻止应用程序启动的错误代码,您的应用程序dynos将启动一次,然后重新启动,然后冷却十分钟。在长时间运行的Web或工作进程偶尔崩溃的正常情况下,dyno将立即重新启动,无需您的任何干预。如果您的dyno连续两次崩溃,它将在系统重试前停留10分钟。
文档:https://devcenter.heroku.com/articles/dynos#automatic-dyno-restarts
编辑关于免费dynos:重启行为是相同的。然而,有一种叫做“Dyno Idling”的东西,它只发生在自由动作中。基本上它意味着如果你的dyno没有收到1小时的任何请求,它将“进入睡眠状态”,下一个请求将“唤醒它”,这将导致下一个请求稍微延迟。只有当您的应用有1个免费web
dyno时才会发生这种情况。
为了规避这一点,要么有2个dynos(然后 none 它们将闲置,但你将支付一个),或者每次(比方说)30都有“某事”轮询你的web dyno分钟。比如pingdom,比如说。
文档:https://devcenter.heroku.com/articles/dynos#automatic-dyno-restarts