【发布时间】:2020-12-22 11:27:09
【问题描述】:
我使用 gunicorn 来允许我的 Flask rest API 同时处理多个请求。我的 gunicorn 配置中有 5 个工人(2 x $(NUM_CORES) + 1)。我测量了响应时间,这是我的结果:
- 1 个请求的响应时间为 20 秒。
- 如果我同时发送5个请求,每个请求的响应时间是55s。
- 如果我同时发送6个请求,前5个请求的响应时间为55s,第6个请求的响应时间为75s(= 55 + 20)
我不明白为什么同时 5 个请求需要 55 秒。我预计 1 个请求的响应时间为 20 秒,认为它会同时并行处理 5 个请求。
55 秒几乎是我个人处理时间 20 秒的 3 倍。
我对多线程了解不多。有人能解释一下为什么并行任务的响应时间比单个处理时间长吗?
谢谢
【问题讨论】:
-
我将如何重现您的结果?这取决于请求在做什么。这取决于它们如何同步以及它们争夺哪些共享资源。具体细节很重要——事实上,它们决定了一切。
标签: multithreading performance time gunicorn