【问题标题】:Heroku: What to do when your dyno/worker crashes?Heroku:当你的 dyno/worker 崩溃时该怎么办?
【发布时间】:2011-09-14 14:09:28
【问题描述】:

我有一名工人 24/7 进行一些处理。但是,有时代码会崩溃,需要重新启动(即使我捕获了异常,我也必须重新启动工作程序才能使其工作)。

当这种情况发生或我做错了什么而这根本不应该发生时,你会怎么做?你的测功机/工人崩溃还是只有我?

谢谢

【问题讨论】:

  • 对于工作进程(dynos),heroku 将自动重启它们(但不是立即)。根据我的尝试-崩溃后5分钟对我来说第一次重新启动,并且两次立即崩溃可能会在另外10分钟后导致重新启动,等等......(指数退避)。下面的答案告诉你如何立即重启 dyno

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


【解决方案1】:

有时,例如在数据库崩溃的情况下,worker 可能不会自动重新启动。你需要这样做。

heroku 重启 web.1

它对我有用。

【讨论】:

    【解决方案2】:

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

    heroku ps:restart web.1
    

    (在 Cedar 堆栈上测试)

    【讨论】:

    • 此命令有助于立即重启崩溃的工作线程,无需等待 10 分钟让应用自动重启。输入 heroku ps 可让您查看 Web Worker (dyno) 是否实际重新启动。
    【解决方案3】:

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

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

    或者,您可以按照this article 中的说明手动强制工作人员重新启动(使用延迟作业):

    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 支持。他们对自己所做的事情非常敏感。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-23
      • 2010-09-18
      • 2014-09-17
      相关资源
      最近更新 更多