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