ruby-on-rails - Rails 和 Heroku : How many workers/dynos do I need

标签 ruby-on-rails heroku resque

我有一个 Tinder 风格的应用程序,允许用户对事件进行评分。用户对事件进行评分后,后台 resque 作业会运行,根据用户的反馈对其他事件重新排名。

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

使用一个简单的例子。如果我有 10 个用户在任何给定时间使用该应用程序,并且我不想让工作等待,那么执行此操作的最佳方法是什么?

我对 Dynos、resque 池和 redis 连接感到困惑。有人可以帮助我理解其中的区别吗?有办法计算吗?

最佳答案

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

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

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

关于ruby-on-rails - Rails 和 Heroku : How many workers/dynos do I need,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39862901/

相关文章:

ruby-on-rails - Rails - validates_uniqueness_of : access duplicate item?

mysql - Rails LHM 迁移 - 指定索引名称

java - 无法连接到 heroku PostgreSQL 数据库

ruby-on-rails - resque worker 数

redis - 如何监听redis队列

ruby-on-rails - 列出存储桶时 Ruby Amazon S3 访问被拒绝

ruby-on-rails - 传递与 id 不同的参数以返回 JSON 用户对象的正确 Rails 路由是什么?提供 Controller 方法

ruby-on-rails - 初学者 Rails 部署到 Heroku

ruby-on-rails - Heroku 部署崩溃 rails 服务器语法错误 File.expand_path ("../spring", __FILE__)

ruby-on-rails - Heroku 后台作业的解决方案?