Puma 集群对处理大量 uploads/downloads 的网站有好处

Puma clustering benefits for site which handles lots of uploads/downloads

我正在尝试了解使用 puma 集群的好处。 GitHub 表示 puma workers 的数量应设置为 cpu 核心的数量,每个线程的默认数量为 0-16。工作进程可以 运行 并行,而线程 运行 并发。据我了解,MRI GIL 只允许所有内核的一个线程执行 运行 Ruby 代码,那么 puma 如何使事情能够 运行 并行/提供超过 [=16= 的好处]宁一个工作进程双倍的线程数?我正在处理的网站是 IO 密集型,同时处理多个上传和下载 - 也欢迎对此设置的任何配置建议。

集群模式下的 worker 实际上会生成新的子进程,每个子进程都有自己的 "GIL"。单个进程中只有一个线程可以一次 运行ning 代码,因此每个 cpu 核心一个进程工作得很好,因为每个 cpu 一次只能做一件事。每个进程 运行 多个线程也很有意义,因为如果一个线程正在等待 IO,它将允许另一个线程执行。