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

2024-02-28

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

我看到有人提到 Puma 工作线程的数量应该由核心数量决定。我找不到 Heroku 透露 Performance-M 或 Performance-L dyno 有多少个核心的地方。

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

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

有人可以提供指导吗?

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


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

  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 https://devcenter.heroku.com/articles/dynos#process-thread-limits
  6. 做一些小实验standard-2X / standard-1X确定PUMA_WORKER value.
  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)

例如,如果PUMA_WORKER我的是 3standard-2Xdyno 作为基线,然后PUMA_WORKER号码上performance-m我会开始测试它是:

16384 / 512 * 3 - 4 = 92

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

EDIT: 以前我的答案已经写过了ps:exec可用的。你可以阅读官方文件 https://devcenter.heroku.com/articles/exec并学习如何通过 ssh 进入正在运行的测功机。应该比以前容易很多。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐