Rails&Heroku:我需要多少工人/动物

Jac*_*ham 8 ruby-on-rails heroku resque

我有一个火种风格的应用程序,允许用户评价事件.在用户对事件进行评级后,将运行后台resque作业,根据用户的反馈对其他事件进行重新排序.

此后台作业大约需要10秒钟,每个用户每分钟运行大约20次.

用一个简单的例子.如果我有10个用户在任何给定时间使用该应用程序,并且我从不希望等待工作,那么最佳方法是什么?

我对Dynos,resque pool和redis连接感到困惑.有人能帮我理解其中的区别吗?有没有办法计算这个?

tod*_*eny 4

不确定你问的是正确的问题。您真正的问题是“我怎样才能获得更好的性能?” 不是“有多少测功机?” 仅添加测功机并不一定会给您带来更好的性能。更多的测功机可以为您提供更多的内存...因此,如果您的应用程序运行缓慢,因为您耗尽了可用内存(即您正在交换中运行),那么更多的测功机可能就是答案。如果这些作业每个运行需要 10 秒,那么……内存可能不是您真正的问题。如果您想监控内存使用情况,请查看 New Relic 等可视化工具。

有很多方法可以解决您的问题。但我将从您编写的代码开始。在 SO 上发布一些代码可能有助于理解为什么该工作需要 10 秒(发布一些代码!)。10秒是很长的时间。因此,优化该作业中的查询几乎肯定会有所帮助。

另一个容易实现的目标...从 resque 切换到 sidekiq 来完成您的后台工作。真的很容易使用。您将使用更少的内存,并且应该会看到性能的即时提升。