【问题标题】:Is it possible scale a specific Heroku Worker?是否可以扩展特定的 Heroku Worker?
【发布时间】:2018-12-05 00:43:40
【问题描述】:

我目前正在尝试开发一个应用程序,该应用程序严重依赖于处理长时间运行(1 - 168 小时)的后台作业的 heroku 工作人员(执行 NodeJS 脚本,在此处无法切换到 Ruby/Rails)。我的问题是某些工作可能会在 1 小时内完成,而其他工作可能需要 168 小时,而且我不想等到我所有的工人都完成后才开始缩减规模,因为 Heroku 会按每个工人的那段时间向我收费.

我对每天重新启动一次 dynos 没有任何问题,但我想知道是否有可能(以及如何)通过 Heroku API 或任何其他方式(可能从内部)缩减特定的 Heroku 工作人员工作进程本身,虽然从内部终止进程似乎只会导致工作进程重新启动,而不是缩小自身)。

如果这是不可能的,那么我想知道是否有人知道如何捕获“缩小事件”(即,是否有一些信号发送到要缩小的随机工作人员,如 SIGTERM 或 SIGKILL? )。

任何建议都值得赞赏。

【问题讨论】:

    标签: heroku scaling worker dyno hirefire


    【解决方案1】:

    一种方法是使用one-off dynos
    Heroku API 将允许您create a dyno。以这种方式创建的 Dynos 不会由 Heroku 管理,这意味着如果它们停止,它们不会自动重新启动。

    因此,您可以有一个监控进程来查找您在应用程序上拥有的 dyno 数量(再次使用 Heroku API,您可以list dynos),并根据需要启动新的。

    每个测功机都会执行您需要它执行的工作,并自行关闭。 唯一可以扩展并永久运行的测功机将是您的​​监控进程。

    【讨论】:

    • 感谢您的建议,我之前考虑过使用一次性,但由于它们最多只能运行 50 个并发 1-2x dynos,除非提出此问题的请求得到批准,并且性质我的应用程序(全面)可能需要更多,我可能不会这样做。 Heroku 支持在事件上回复了我,以便在测功机“缩小”事件上监听,但是,它确实是一个 SIGTERM,所以我可能会解决这个问题。
    猜你喜欢
    • 2010-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-12
    • 2021-06-01
    • 1970-01-01
    相关资源
    最近更新 更多