Gunicorn单Worker双线程配置下请求处理量及参数作用咨询
Gunicorn Worker与Threads参数解析及QPS估算
一、Worker与Threads参数的具体作用
Worker(进程数)
-w 1表示启动1个独立的Python进程来处理请求。每个Worker进程拥有独立的内存空间和Python解释器实例,进程之间不共享内存。你的应用是I/O密集型(需要等待外部URL响应),单Worker进程在等待外部请求时会处于阻塞状态,但当前配置下只有这一个进程负责接收和调度所有请求。
Threads(线程数)
--threads 2表示每个Worker进程内部启动2个线程来处理请求。线程共享所属Worker进程的内存空间,切换开销远低于进程。对于你的I/O密集型应用来说,当一个线程在等待外部URL响应时,另一个线程可以立即处理新的请求,避免进程资源被闲置,提升了整体的请求处理效率。
二、该配置下每秒最少可处理的请求数
这个“最少请求数”完全取决于你调用的外部URL的响应速度,因为你的应用本身逻辑极轻量,几乎没有额外耗时:
假设外部URL的平均响应时间为T秒,当前配置下同一时间最多能并行处理2个请求(2个线程各处理一个)。
- 如果外部URL响应时间为1秒,每秒最少可处理
2/1 = 2个请求; - 如果外部URL响应时间为2秒,每秒最少可处理
2/2 = 1个请求; - 以此类推,核心计算公式为:最少QPS = 线程数 / 外部URL平均响应时间。
内容的提问来源于stack exchange,提问作者Kavin Kumar
相关产品推荐
相关产品推荐

