文章目录

Mongoose采用了一个自适应的线程池的模型。有一个主线程(master thread)用于打开配置端口和等待连接的到了。一旦新的连接到来,主线程将衍生一个新的线程去服务该连接。当衍生的线程处理完连接的请求之后,它会保持一段时间的空闲(可以通过配置选项-idle_time 控制空闲时间),在此期间主线程可能会传递另一个连接给它,让它服务。

因此,每个连接都是在自己的线程中执行,且线程数量随着web服务器的负载而变化。然而,最大的活跃线程数由-max_thread 控制。如果一旦总的线程数达到了这个阈值,当新的连接到来时,主线程将等到有线程空闲时在分配线程服务新到来的连接。以此同时,建立了TCP监听队列,即当没有线程空闲时到来的新连接会被置入该队列,当有线程空闲了会从队列中取出连接并服务。如果没有线程变空闲,而TCP队列又满了,web服务器将拒绝新到来的连接请求。

上面所述的过程大致如下所示:

文章目录