使用 gunicorn 进行部署时,我应该为多核 CPU 创建多少个工作线程



我正在使用 gunicorn 来部署我的 Web 服务。并且该文档在以下网页中建议了一个用于部署的示例配置文件:http://docs.gunicorn.org/en/latest/configure.html。

代码是这样的:

import multiprocessing
bind = "127.0.0.1:8000"
workers = multiprocessing.cpu_count() * 2 + 1

我不知道为什么我们应该使用这个奇怪的计数:"num_of_cpu_core * 2 + 1"。为什么不直接使用 CPU 内核数?

他们的架构页面提供了更多关于选择工作线程数量的建议:

虽然不太科学,但该公式基于以下假设:对于给定的核心,一个工作线程将从套接字读取或写入,而另一个工作线程正在处理请求。

"为什么不使用内核数作为工作线程计数"的答案是,有时工作线程被阻塞(例如在 IO 操作期间),因此让额外的工作线程更好地利用 CPU。

相关内容

最新更新