关于gunicorn:我曾期望工人的最佳数量是$num_cores或$num_cores-1,即每个工人都有自己的核心.但是gunicorn documentation提供以下准则:
Gunicorn relies on the operating system to provide all of the load
balancing when handling requests. Generally we recommend (2 x
$num_cores) + 1 as the number of workers to start off with. While not
overly scientific, the formula is based on the assumption that for a
given core, one worker will be reading or writing from the socket
while the other worker is processing a request.
我不明白这个解释.这是否表明同一内核可以同时用于1)从套接字读取或写入和2)处理请求? (单核可以做到这一点吗?)
解决方法:
答案基于等待事物的过程.
例如,当您调用SQL Server时,核心什么都不做.每个内核有一个额外的工作程序意味着内核调度程序可以将时间用于其他进程.
这样您将获得更多的RPS.
如果您详细了解每个请求的时间和负载模式,则可以根据需要进一步更改时间.