我试图了解使用puma群集的好处。 GitHub说puma worker的数量应该设置为cpu核心数,每个的默认线程数是0-16。当线程并发运行时,工作进程可以并行运行。据我所知,MRI GIL只允许所有内核中的一个线程运行Ruby代码,那么puma如何使并行运行的东西/提供比运行一个工作进程多两倍线程的好处?我正在处理的网站是严格的IO绑定,同时处理多个上传和下载 - 也欢迎任何配置建议。
答案 0 :(得分:0)
群集模式下的工作人员实际上会产生新的子进程,每个子进程都有自己的" GIL"。单个进程中只有一个线程可以同时运行代码,因此每个cpu核心的进程运行良好,因为每个cpu一次只能做一件事。每个进程运行多个线程也是有意义的,因为如果一个线程正在等待IO,它将允许另一个线程执行。