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

don*_*ald 12 heroku node.js ruby-on-rails-3

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

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

谢谢

Chr*_*ini 17

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

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

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

heroku workers 0; 
heroku workers 1;
Run Code Online (Sandbox Code Playgroud)

或者您可以通过执行(在本文中提到)重新启动特定工作程序:

heroku restart worker.1
Run Code Online (Sandbox Code Playgroud)

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

heroku stack:migrate bamboo-mri-1.9.2
Run Code Online (Sandbox Code Playgroud)

在这种情况下,仍然会出现这样的问题.最好联系Heroku支持.他们对自己的所作所为非常敏感.


Amp*_*mpT 9

重启特定heroku web worker的最新命令(2014):

heroku ps:restart web.1
Run Code Online (Sandbox Code Playgroud)

(在Cedar堆栈上测试)

  • 此命令有助于立即重新启动崩溃的工作人员,**而无需等待10分钟**以使应用程序自动重启.键入`heroku ps`可以查看Web worker(dyno)是否实际重启. (2认同)