gpt4 book ai didi

multithreading - Puma 中的 Workers 和 Threads 有什么区别

转载 作者:行者123 更新时间:2023-12-03 06:03:04 25 4
gpt4 key购买 nike

在heroku dyno上下文中,puma工作线程和puma线程有什么区别?

我所知道的(如果我错了请纠正):

  • 精简不是并发的,因此 Web 进程一次只能执行一个请求

  • 在 Unicorn 中,我知道我可以在一个进程中拥有多个 Unicorn Worker 来添加并发性。

但是在 puma 中有线程和工作线程。工作线程不是 puma 进程内的线程吗?

我可以使用更多工作线程/线程在 Heroku 中添加 Web 并发吗?

最佳答案

正如另一个答案所述,这个 Heroku article对某些配置项的解释非常好。

但是,如果您需要在 Heroku 或任何地方调整您的应用程序,那么了解其工作原理是值得的。

当你说“worker是puma进程内的线程”时,我认为你几乎是正确的,我相信worker是从puma fork 出来的操作系统级进程,然后可以在内部使用线程。

据我了解 - 无论您通过 workers 配置设置多少次,puma 都会派生其操作系统进程来响应 http 请求。这为您提供了处理多个请求方面的并行性,但这通常会占用更多内存,因为它会为每个工作人员“复制”您的应用程序代码。

然后,每个 puma 工作线程将根据线程配置在其操作系统进程中使用多个线程。这些通过允许 puma 进程本身响应多个请求来增加并发性,以便如果一个线程被阻塞,即处理一个请求,它可以使用另一个线程处理新请求。如前所述,这要求您的整个应用程序是线程安全的,这样,例如,一个请求中的任何全局配置都不会“泄漏”到另一个请求中。

您可以调整 puma,以便工作线程的数量足以满足可用 CPU 和内存的数量,然后根据您希望运行应用程序的主机饱和程度以及应用程序的行为方式来调整线程 - 更多内容并不总是等于更快/更多的请求吞吐量。

关于multithreading - Puma 中的 Workers 和 Threads 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24280743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com