Apache HTTP Server 版本2.2
說明 | 一個非線程型的、預(yù)派生的MPM |
---|---|
狀態(tài) | MPM |
模塊名 | mpm_prefork_module |
源文件 | prefork.c |
這個多路處理模塊(MPM)實現(xiàn)了一個非線程型的、預(yù)派生的web服務(wù)器,它的工作方式類似于Apache 1.3。它適合于沒有線程安全庫,需要避免線程兼容性問題的系統(tǒng)。它是要求將每個請求相互獨立的情況下最好的MPM,這樣若一個請求出現(xiàn)問題就不會影響到其他請求。
這個MPM具有很強的自我調(diào)節(jié)能力,只需要很少的配置指令調(diào)整。最重要的是將MaxClients
設(shè)置為一個足夠大的數(shù)值以處理潛在的請求高峰,同時又不能太大,以致需要使用的內(nèi)存超出物理內(nèi)存的大小。
一個單獨的控制進程(父進程)負責(zé)產(chǎn)生子進程,這些子進程用于監(jiān)聽請求并作出應(yīng)答。Apache總是試圖保持一些備用的(spare)或者是空閑的子進程用于迎接即將到來的請求。這樣客戶端就不需要在得到服務(wù)前等候子進程的產(chǎn)生。
StartServers
, MinSpareServers
, MaxSpareServers
, MaxClients
指令用于調(diào)節(jié)父進程如何產(chǎn)生子進程。通常情況下Apache具有很強的自我調(diào)節(jié)能力,所以一般的網(wǎng)站不需要調(diào)整這些指令的默認值?赡苄枰幚碜畲蟪^256個并發(fā)請求的服務(wù)器可能需要增加MaxClients
的值。內(nèi)存比較小的機器則需要減少MaxClients
的值以保證服務(wù)器不會崩潰。更多關(guān)于調(diào)整進程產(chǎn)生的問題請參見性能方面的提示。
在Unix系統(tǒng)中,父進程通常以root
身份運行以便邦定80端口,而Apache產(chǎn)生的子進程通常以一個低特權(quán)的用戶運行。User
和Group
指令用于設(shè)置子進程的低特權(quán)用戶。運行子進程的用戶必須要對它所服務(wù)的內(nèi)容有讀取的權(quán)限,但是對服務(wù)內(nèi)容之外的其他資源必須擁有盡可能少的權(quán)限。
MaxRequestsPerChild
指令控制服務(wù)器殺死舊進程產(chǎn)生新進程的頻率。
說明 | 空閑子進程的最大數(shù)量 |
---|---|
語法 | MaxSpareServers number |
默認值 | MaxSpareServers 10 |
作用域 | server config |
狀態(tài) | MPM |
模塊 | prefork |
MaxSpareServers
指令設(shè)置空閑子進程的最大數(shù)量。所謂空閑子進程是指沒有正在處理請求的子進程。如果當前有超過MaxSpareServers
數(shù)量的空閑子進程,那么父進程將殺死多余的子進程。
只有在非常繁忙機器上才需要調(diào)整這個參數(shù)。將此參數(shù)設(shè)的太大通常是一個壞主意。如果你將該指令的值設(shè)置為比MinSpareServers
小,Apache將會自動將其修改成"MinSpareServers
+1
"。
說明 | 空閑子進程的最小數(shù)量 |
---|---|
語法 | MinSpareServers number |
默認值 | MinSpareServers 5 |
作用域 | server config |
狀態(tài) | MPM |
模塊 | prefork |
MinSpareServers
指令設(shè)置空閑子進程的最小數(shù)量。所謂空閑子進程是指沒有正在處理請求的子進程。如果當前空閑子進程數(shù)少于MinSpareServers
,那么Apache將以最大每秒一個的速度產(chǎn)生新的子進程。
只有在非常繁忙機器上才需要調(diào)整這個參數(shù)。將此參數(shù)設(shè)的太大通常是一個壞主意。