Heroku:当您的dyno / worker崩溃时该怎么办?

时间:2011-06-14 10:22:39

标签: ruby-on-rails-3 node.js heroku

我有一名工人每天24小时进行一些处理。但是,有时代码崩溃并且需要重新启动(即使我捕获异常,我必须重新启动worker以使其工作)。

当这种情况发生时,你做了什么,或者我做错了什么,这根本不应该发生?你的dynos /工人是撞车还是仅仅是我?

感谢

3 个答案:

答案 0 :(得分:17)

Heroku应该在每次崩溃时重启一名工人。据我所知,您不必选择或配置任何东西。无论你的工作是什么:工作任务一旦失败就会被执行。

如果您严重依赖Web应用程序中的后台作业。您可以创建一个rake任务,找到要更新的最后一条记录,然后执行后台作业来更新它。或者自动执行rake任务以查找自上次崩溃以来需要更新的其余记录。

或者,您可以按照this article(使用delayed_job)中的说明手动重启工作人员:

heroku workers 0; 
heroku workers 1;

或许您可以通过执行(在this article中提到)重新启动特定的工作人员:

heroku restart worker.1

顺便说一下,试试1.9 stack。在此之前,请确保您的应用与1.9.2兼容。希望崩溃在那里不那么频繁:

heroku stack:migrate bamboo-mri-1.9.2

如果发生这种问题仍然存在。最好联系Heroku支持。他们对自己的所作所为非常敏感。

答案 1 :(得分:9)

重新启动特定 heroku网络工作者的最新命令(2014):

heroku ps:restart web.1

(在Cedar堆栈上测试)

答案 2 :(得分:1)

有时,例如在数据库崩溃的情况下,工作人员可能无法自动重启。你需要这样做。

heroku restart web.1

它对我有用。