如何确定在Heroku Performance dyno上运行的Puma工作者和线程的正确数量?

我已经阅读了Heroku关于Puma和dyno类型的所有文章,我无法得到直接答案。

我看到一些人提到Puma工人的数量应该由核心数决定。 我找不到Heroku揭示出性能-M或性能-L dyno有多少核心的地方。

在本文中,Heroku暗示了一种方法: https : //devcenter.heroku.com/articles/deploying-rails-applications-with-the-puma-web-server

我认为他们建议将线程设置为1并增加Puma工作者的数量,直到你开始看到R14(内存)错误,然后退出。 然后增加线程数,直到CPU最大化,虽然我不认为Heroku报告CPU利用率。

有人可以提供指导吗?

(我还想决定是否应该使用一个性能-L或多个性能-M dynos,但我认为一旦我弄清楚如何设置工作者和线程就会很清楚)

我目前想出的路线图是这样的:

  1. heroku run "cat /proc/cpuinfo" --size performance-m --app yourapp
  2. heroku run "cat /proc/cpuinfo" --size performance-l --app yourapp
  3. 记下您拥有的流程信息
  4. 谷歌搜索模型类型,系列,型号,英特尔处理器的步数,以及寻找该处理器具有或模拟的核心数量。
  5. 看看这个https://devcenter.heroku.com/articles/dynos#process-thread-limits
  6. 使用standard-2X / standard-1X进行一些小型实验以确定PUMA_WORKER值。
  7. 你的数学是这样的:

(Max Threads of your desired dyno type could support) / (Max Threads of baseline dyno could support) x (Your experiment `PUMA_WORKER` value on baseline dyno) - (Number of CPU core)

例如,如果我的standard-2X PUMA_WORKER上的PUMA_WORKER为3作为基线,那么performance-m PUMA_WORKER上的PUMA_WORKER数字将开始测试它将是:

16384/512 * 3 – 4 = 92

您还应该考虑应用程序消耗多少内存并选择最低内存。

编辑 :以前我的答案是在ps:exec可用之前编写的。 你可以阅读官方文档并学习如何运行dyno(s)。 它应该比以前容易得多。