2分钟
06 worker
复用的多进程I/O模型,多进程多线程,IIS使用此模型
一个主进程:生成m个子进程,每个子进程负责生个n个线程,每个线程响应
一个请求,并发响应请求:m*n
优点:占据更少的内存,高并发下表现更优秀。
缺点:必须考虑线程安全的问题,因为多个子线程是共享父进程的内存地址的。
如果使用keep-alive的长连接方式,某个线程会一直被占据,也许中间几乎没
有请求,需要一直等待到超时才会被释放。如果过多的线程,被这样占据,也会
导致在高并发场景下的无服务线程可用。(该问题在prefork模式下,同样会发生)
worker的默认配置:
<IfModule worker.c>
StartServers 4
MaxClients 300
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0 无限制
</IfModule>
学员评价