apache服務器中進程和線程的使用

http://blog.csdn.net/mayabin/article/details/1042642


apache功能強大,應用十分普遍。linux

爲了使不一樣平臺的apache都能獲得優化,apache支持MPM模塊。web

linux/unix下的好的2個模塊分別爲prefork和worker。apache

最初設計unix的時候,並無線程這個概念,因此不管系統內核仍是應用軟件,都不支持線程的應用。最小的做業單位是進程。windows

windows是一個徹底支持線程的操做系統。線程比進程更小,能提升系統效率,減小系統開支。服務器

如今不管是linux仍是freebsd,都在積極改進,在內核中加入線程的支持。優化

apache自己即支持線程也支持進程。它怎麼實現的呢?就是用MPM。操作系統

prefork模塊:基於進程的web服務器.net

默認配置段以下: 
 
StartServers 5 
MinSpareServers 5 
MaxSpareServers 10 
MaxClients 150 
MaxRequestsPerChild 0 
線程

prefork的工做原理是,由主控制進程生成「StartServers」個子進程,當空閒進程小於MinSpareServers時,系統生成一個又一個進程,直到進程數達到MaxSpareThreads;而MaxClients設置容許的最大客戶鏈接數。每一個子進程處理服務請求次數由MaxRequestPerChild定義。 缺省的設置值爲0,即響應無限此請求。 
設計

worker模塊:基於線程程的web服務器

默認配置以下: 
 
StartServers 2 
MaxClients 150 
MinSpareThreads 25 
MaxSpareThreads 75 
ThreadsPerChild 25 
MaxRequestsPerChild 0 

worker的工做原理是,由主控制進程生成「StartServers」個子進程,每一個子進程中包含固定的ThreadsPerChild線程數,各個線程獨立地處理請求。一樣,爲了避免在請求到來時再生成線程,MinSpareThreads和MaxSpareThreads設置了最少和最多的空閒線程數;而MaxClients設置容許的最大線程總數。若是現有子進程中的線程總數不能知足負載,控制進程將派生新的子進程。每一個子線程處理服務請求次數由MaxRequestPerChild定義。 缺省的設置值爲0,即響應無限此請求。

相關文章
相關標籤/搜索