【问题标题】:Best way to correctly set the number of workers and threads in a Rails application using Puma?使用 Puma 在 Rails 应用程序中正确设置工作程序和线程数的最佳方法?
【发布时间】:2016-11-06 14:01:30
【问题描述】:

是否有任何公式可以使用 puma 发现 Rails 应用程序中的工作线程数和线程数? 工人将是核心数?线程呢??我试图搜索类似的主题,但我不清楚......

【问题讨论】:

  • 我添加了我用来学习如何调整我的 Rails 服务器的参考资料。希望对您有所帮助。

标签: ruby-on-rails multithreading ruby-on-rails-3 ruby-on-rails-4 puma


【解决方案1】:

即使你不在 Heroku,他们也有关于 Puma 的好文档。 喜欢这个:link

当我问自己同样的问题时,这个answer 帮助了我。

基本上我根据ram数量设置与核心数和线程数相匹配的worker数。但我不是用火箭科学公式来做这个(也许我应该),它更像是一个尝试和调整的过程。

作为奖励阅读,我会推荐这篇关于如何将 Rails 应用程序扩展到 1000 req/sec 的文章,它提供了有趣的建议:link

【讨论】:

  • 文章大约1000个rec/分钟,大约~17个/秒,不算多。
【解决方案2】:
Number of Worker * Number of threads inside the worker = Database Connection pool size

例如,如果您正在使用 2.5 GB RAM 的计划,并且您希望使用 2 GB 左右的内存。

1 worker * 8 threads = 8(DB pool size)

【讨论】:

    【解决方案3】:

    如果您使用 Heroku,您可以根据您的网络测功机大小设置使用 puma 的工人数量。

    对于某些应用程序,两个 Puma 工作器会导致您使用的 RAM 比标准 1x dyno 所能提供的更多

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-10
      • 2017-04-17
      • 2022-08-02
      • 2015-09-29
      • 2011-01-18
      • 2018-05-11
      • 2010-12-05
      相关资源
      最近更新 更多