Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何监视heroku调度器运行的重复rake任务?_Ruby On Rails_Heroku_Monitoring_Scheduler_Newrelic - Fatal编程技术网

Ruby on rails 如何监视heroku调度器运行的重复rake任务?

Ruby on rails 如何监视heroku调度器运行的重复rake任务?,ruby-on-rails,heroku,monitoring,scheduler,newrelic,Ruby On Rails,Heroku,Monitoring,Scheduler,Newrelic,我刚刚收到上个月的heroku账单,预定的rake任务是一个相对沉重的负担。我们的开发过程还很早,所以我们只是开发了一些rake任务来完成最近的工作,对它们的优化没有太多的关注 现在,我们希望提高他们的性能和处理时间使用率。我们使用New Relic来监控webapp的性能,但显然这种类型的rake任务在默认情况下会被忽略,并且不清楚如何覆盖它 有人有类似的问题吗?我怎样才能接近实时地跟踪计划的任务,以监控性能、优化并不会收到意外的账单?虽然您无法真正监控rake任务,但您可以做一些小事情。一个

我刚刚收到上个月的heroku账单,预定的rake任务是一个相对沉重的负担。我们的开发过程还很早,所以我们只是开发了一些rake任务来完成最近的工作,对它们的优化没有太多的关注

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


有人有类似的问题吗?我怎样才能接近实时地跟踪计划的任务,以监控性能、优化并不会收到意外的账单?

虽然您无法真正监控rake任务,但您可以做一些小事情。一个是使用日志记录。将任务的开始时间和结束时间输出到日志中,然后您就可以看到在持续时间方面发生了什么。如果你把它和纸质文件附加组件结合起来,那么你可以在以后做额外的询问

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

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

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

第三种方法是延迟作业,它的
runat
选项允许您对将来运行的作业进行排队(作业可以自己重新排队)。这有几个问题,一次失败可能会毁掉整个链条,你需要一个全职的工人来处理这些问题

因此,为了尽量减少您的账单,请确保您的rake任务具有同样的性能和可靠性,然后选择适合您的调度选项。如果您查看的是日程安排和用户创建的事件,那么延迟的作业可能是最好的选择。如果您正在查看一些定期运行的任务,请转到scheduler。如果你想定期做很多对时间要求很高的工作,那就按时钟工作吧


无论哪种方式,您都应该能够根据您的方法将大量的处理限制为一个或两个流程。

当您在heroku cedar上运行时,有一种方法可以为您的员工获得免费设置。这不是对您的监控问题的回答,但无论如何它可能很有趣:

您可以在您的rake任务中报告它们的性能数据。

不是对特定问题的回答,而是。。。
减少开销的一种方法是使用Unicorn服务器让多个工人在一个dyno上工作。这取决于您的设置,但是大多数花时间测试它的人都可以轻松地同时运行3-4个工作进程。这是清除线索或任务的巨大推动。请注意不要将为dyno分配的内存最大化。

您正在进行哪种处理?如果你做得对,你应该在需要扩展它之前让每个员工全力以赴,因此你的“意外账单”应该永远不会比正常情况下多出30-40美元。每个任务只使用一个员工,因此我们得到了该价格范围的账单,总体来说是低的,但在一个有六个用户的未发布应用程序的情况下,对我们来说是高的。我们希望在短期内处理更多的数据,所以我们希望在得到一个非常糟糕的惊喜之前,现在就进行优化。谢谢你的回答。我们最终转向混合使用Heroku调度程序和Resque,同时强制启动new relic代理以更好地跟踪情况。