Multithreading 为什么gunicorn的多线程时间不等于单个处理时间?
我使用gunicorn允许我的Flask rest API同时处理多个请求。我的gunicorn配置中有5个worker(2x$(NUM_CORES)+1)。我测量了响应时间,以下是我的结果:Multithreading 为什么gunicorn的多线程时间不等于单个处理时间?,multithreading,performance,time,gunicorn,Multithreading,Performance,Time,Gunicorn,我使用gunicorn允许我的Flask rest API同时处理多个请求。我的gunicorn配置中有5个worker(2x$(NUM_CORES)+1)。我测量了响应时间,以下是我的结果: 1个请求的响应时间为20秒 如果我同时发送5个请求,每个请求的响应时间为55秒 如果我同时发送6个请求,前5个请求的响应时间为55s,第6个请求的响应时间为75s(=55+20) 我不明白为什么5个请求同时需要55秒。我预计响应时间为20秒,对于1个请求,我认为它将同时并行处理5个请求 55秒几乎是我
- 1个请求的响应时间为20秒
- 如果我同时发送5个请求,每个请求的响应时间为55秒
- 如果我同时发送6个请求,前5个请求的响应时间为55s,第6个请求的响应时间为75s(=55+20)
谢谢我之所以得到这些结果,是因为我的情况下5个工人太多了。 我选择5是因为gunicorn的推荐 通常,我们建议(2 x$num_核心)+1作为工人数量 首先。虽然不太科学,但这个公式是基于 假设对于给定的核心,一名工人将阅读或 在另一个工作进程处理数据时从套接字写入 请求 在我的例子中,我同时发送的所有请求都是流程参数。因此,我将工人人数改为2,现在我得到了对我有意义的结果
- 1个请求的响应时间为20秒
- 如果我同时发送两个请求,每个请求的响应时间为20秒
- 如果我同时发送3个请求,则前2个请求的响应时间 是20秒,第三个请求的响应时间是40秒