gpt4 book ai didi

ruby-on-rails - 如何监控由 heroku 调度程序运行的循环 rake 任务?

转载 作者:行者123 更新时间:2023-12-04 05:36:40 25 4
gpt4 key购买 nike

刚拿到上个月的heroku账单,预定的rake任务是比较重的负担。我们在我们的开发过程中还处于早期,所以我们刚刚开发了一些 rake 任务来完成最近的工作,并没有过多关注他们的优化。

现在我们想要提高他们的性能和他们的 heroku 处理时间使用。我们使用 New Relic 来监控 webapp 性能,但显然默认情况下会忽略这种类型的 rake 任务,目前还不清楚如何覆盖它。

有人遇到过类似的问题吗?如何近乎实时地跟踪计划任务以监控性能、优化并且不会收到意外账单?

最佳答案

虽然您不能真正很好地监控 rake 任务,但您可以做一些小事。一种是使用日志记录。将任务的开始和结束时间输出到日志中,然后您就可以看到发生了什么持续时间。如果您将其与 Papertrail 附加组件相结合,那么您可以稍后进行额外的询问。

至于运行作业本身,有几种方法可以运行后台进程,这取决于它们需要如何运行:

如果您需要按计划运行作业,有几个选项可用。首先是 Heroku 调度程序,它非常好,但不能保证执行会发生。通常,您会使用它来启动一项 rake 任务,该任务将在任务期间启动一次性 dyno - 因此您需要在开发中确保这些任务尽可能高效。

或者,如果您正在寻找需要更多控制或使用时钟过程的工作。本质上,这是一个 24/7 全天候运行的 dyno,它除了以预设的时间间隔和时间启动其他工作外什么都不做。这通常会使用发条 gem 来完成。这种方法的缺点是您需要一直为时钟进程付费。

第三种方法,也是一种可行的方法是延迟作业,它是 runat选项,允许您将作业排队以在将来运行(并且作业可以自行重新排队)。这有一些问题,因为故障可能会杀死整个链条,您需要一个全职工作人员来处理所有这些问题。

因此,为了最大限度地减少您的账单,请确保您的佣金任务具有高性能和可靠性,然后选择适合您的调度选项。如果您正在查看计划和用户创建的事件,则 delay_job 可能是最佳选择。如果您正在查看一些定期运行的任务,请使用调度程序。如果您正在考虑定期运行大量时间紧迫的工作,请使用发条。

无论哪种方式,您都应该能够根据您的方法将相当数量的处理限制在一个或两个进程中。

关于ruby-on-rails - 如何监控由 heroku 调度程序运行的循环 rake 任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9141393/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com