分解并加快Rake任务

时间:2015-10-30 07:36:51

标签: ruby sinatra rake

我们的应用程序有一项功能,需要在特定时间每天运行rake tast 对所有用户。这涉及计算其某些属性并运行数据库查询并向每个用户发送推送通知。因此,该任务被设计为在O(n)中运行,但这仍然意味着随着用户群的增加而增加总时间。我们希望任务在不超过一分钟的时间内完成 - 它已经花了8分钟在14000个用户并且还增加了CPU工具(在整个剩余的时间里,平均cpu util大约10%但是上升到任务运行时为50%)。我想在这里解决两个问题 - 让任务在较短的时间内运行并降低cpu util的任务运行峰值。

技术规格 - Sinatra应用程序为应用程序提供API,在Phusion Passenger(nginx模块)上运行,使用MongoDB并部署在c3.large ec2实例上。

P.S - 我对如何在Ruby中完成并行处理和线程以及它是否可以解决这个问题知之甚少,但是可以对整个用户进行分析并且可以解决这些问题的难题吗?如果是这样,我该怎么做呢?我想避免为了这个目的购买更大的服务器,因为其余的时间它很容易处理请求,就像我上面指出的那样。

0 个答案:

没有答案