问题 使用Puma的工人,线程和池大小


如果我有一个1核心的服务器,有多少puma worker,threads和什么数据库池大小合适?

一般大拇指在这里是什么?


9181
2018-02-02 11:56


起源



答案:


不是一个简单的答案。

两个主要信息来源是:

  1. Puma github存储库 (作者的观点)
  2. Heroku的网页 (主要大用户的观点)

不幸的是,它们之间的不一致主要是因为heroku具有不同的部署指标和术语。

所以我最终遵循美洲狮资源库指南说:

  • 每个核心一名工人
  • 与RAM可用性和应用程序相关的线程确定
  • 线程=连接池

所以线程数主要是try和check操作。


9
2018-05-02 09:52



“每个核心的一个工人”指南被大量抛出,但它基本上与Heroku所说的相反(他们将RAM视为工人的唯一限制因素,并建议线程应与可用的处理器绑定)。有没有人对此有最终决定权? Heroku的版本对我来说更直观。 - robomc
据我了解,Puma工人的真正好处是并行性,因为它们是独立的ruby过程。如果你只有1个核心,那么实际上没有理由使用超过1个工作者,因为它们不能并行运行。也就是说,即使在单核环境中,Heroku也可能发现了使用多个工作人员的其他一些效率提升。 - Chris Hall
你完全正确,我把它作为准则的一部分:每个核心一个工人;) - tommasop
假设“核心”与heroku dyno相同,我是否正确? - Matt
在单核环境中,我注意到多个进程的大延迟。 - GorillaApe


答案:


不是一个简单的答案。

两个主要信息来源是:

  1. Puma github存储库 (作者的观点)
  2. Heroku的网页 (主要大用户的观点)

不幸的是,它们之间的不一致主要是因为heroku具有不同的部署指标和术语。

所以我最终遵循美洲狮资源库指南说:

  • 每个核心一名工人
  • 与RAM可用性和应用程序相关的线程确定
  • 线程=连接池

所以线程数主要是try和check操作。


9
2018-05-02 09:52



“每个核心的一个工人”指南被大量抛出,但它基本上与Heroku所说的相反(他们将RAM视为工人的唯一限制因素,并建议线程应与可用的处理器绑定)。有没有人对此有最终决定权? Heroku的版本对我来说更直观。 - robomc
据我了解,Puma工人的真正好处是并行性,因为它们是独立的ruby过程。如果你只有1个核心,那么实际上没有理由使用超过1个工作者,因为它们不能并行运行。也就是说,即使在单核环境中,Heroku也可能发现了使用多个工作人员的其他一些效率提升。 - Chris Hall
你完全正确,我把它作为准则的一部分:每个核心一个工人;) - tommasop
假设“核心”与heroku dyno相同,我是否正确? - Matt
在单核环境中,我注意到多个进程的大延迟。 - GorillaApe