Apache HTTP Server 版本 2.4
說明 | 建置一個非執行緒化的預先分支化網路伺服器 |
---|---|
狀態 | MPM |
模組識別 | mpm_prefork_module |
原始檔 | prefork.c |
此多重處理模組(MPM)建置一個非執行緒化的預先分支化網路伺服器。每個伺服器程序都可以回應收到的請求,而母程序則管理伺服器池的大小。此模組適合需要避免執行緒處理來符合相容性需求的網站。它也是隔離每個請求的最佳 MPM,因此單一請求的問題不會影響其他請求。
此 MPM 的自我調適能力極佳,因此很少需要調整其組態指令。最重要的設定是 MaxRequestWorkers
必須夠大,才能處理預期會收到的同時請求數,但又要夠小,才能確保所有程序有足夠實體記憶體使用。
單一控制程序負責啟動子程序,後者會監聽連線並伺候處理連線時而來的連線。Apache HTTP 永遠試圖維持數個 備用 或閒置的伺服器程序,以備用於伺候處理進來的請求。這樣一來,用戶端不必等到新的子程序分岔啟動,才能伺候處理其請求。
StartServers
、MinSpareServers
、MaxSpareServers
和 MaxRequestWorkers
這些指令,管理上層程序如何建立子程序來伺候處理請求。整體而言,Apache HTTP 非常自我管理,所以大多數網站不需要調整這些指令,即可使用其預設值。需要同時伺候處理 256 個以上請求的網站,可能需要增加 MaxRequestWorkers
,而記憶體有限的網站可能需要減少 MaxRequestWorkers
,以避免伺服器速度變得很慢(不交換記憶體至磁碟再交換回來)。效能提示 說明文件提供了更多有關調整程序建立的資訊。
上層程序在 Unix 系統通常以 root
啟動,目的是為了繫結至埠 80,但子程序的啟動則由 Apache HTTP 以權限較低的使用者身分來執行。User
和 Group
這些指令用來設定 Apache HTTP 子程序的權限。子程序必須能讀取所有將要伺候處理的內容,但其應有如可能最少的權限。
MaxConnectionsPerChild
控制伺服器回收程序的頻率,作法是終止舊程序並啟動新程序。
此 MPM 使用 mpm-accept
互斥信號,將進來的連線存取序列化,以解決暴風雨效應問題(通常發生於存在多個監聽套接字時)。此互斥信號的實作面向,可以使用 Mutex
指令設定。效能提示 說明文件提供了更多有關此互斥信號的資訊。
說明 | 閒置子伺服器程序的最大數量 |
---|---|
語法 | MaxSpareServers 數量 |
預設 | MaxSpareServers 10 |
內容 | 伺服器設定 |
狀態 | MPM |
模組 | prefork |
指令碼 MaxSpareServers
設定想要的閒置子伺服器程序的最大數量。閒置程序就是沒有處理請求的程序。如果超過 MaxSpareServers
處在閒置狀態,主程序就會終止額外的程序。
只有流量非常大的網站才需要調整這個參數。將這個參數設定為很大的數字幾乎永遠都是個壞點子。如果你嘗試將數值設定為小於或等於 MinSpareServers
,Apache HTTP Server 就會自動將它調整為 MinSpareServers
+ 1
。
說明 | 閒置子伺服器程序的最小數量 |
---|---|
語法 | MinSpareServers 數值 |
預設 | MinSpareServers 5 |
內容 | 伺服器設定 |
狀態 | MPM |
模組 | prefork |
指令碼 MinSpareServers
設定想要的閒置子伺服器程序的最小數量。閒置程序就是沒有處理請求的程序。如果閒置的 MinSpareServers
數量少於,主程序就會建立新的子程序:它會產生一個,等候一秒,然後產生兩個,等候一秒,然後產生四個,然後會以等比級數成長,直到每秒產生 32 個子程序為止。只要滿足 MinSpareServers
的設定,它就會停止。
只有流量非常大的網站才需要調整這個參數。將這個參數設定為很大的數字幾乎永遠都是個壞點子。