檢視 Apache 第 1.3 版程序模型:IBM HTTP Server
效能調整 IBM HTTP Server 文件
UNIX 使用者

檢視 IBM HTTP Server 中的 Apache 第 1.3 版程序模型

UNIX 作業系統中的 Apache 第 1.3 版提供每個要求伺服器的前置分支程序。 當 Apache 的程序啟動時,它會分出一些程序,以負責接受進行接聽的 Socket 所發出的連線。 系統收到連線時,會啟動其中一個程序來處理連線。 由於 Apache 不採行非同步網路 I/O, Apache 在處理同時連接的每一個瀏覽器與用戶端時各需要一項程序。 舉例來說,Apache 需要 1000 項程序來處理 1000 個同時連接的用戶端或連線。

識別伺服器不堪負荷程序數目的症狀

如果您發現伺服器 CPU 使用率過低,而用戶端所提出的靜態頁面要求要花較長的時間處理,就表示您目前用來處理要求的伺服器程序可能用完了。 當入埠要求的數目多於您用以處理這些要求的 Apache 程序數目時,即會發生此情況。 新連線會放在 TCP/IP 堆疊接聽佇列中,以等待可用程序接受它。 一旦有程序變成可用, 該程序即會接受與處理接聽佇列中的連線。連線要抵達接聽佇列頂端可能需要一段時間。

如果您將 Apache 配置成利用多個埠來接聽,您可能會發現某埠(如埠 80)的回應較慢,另一個埠(如埠 443)的回應比較恰當。 回應時間的不同是因各埠擁有自己的接聽佇列所致。 您可能會用較深的埠 80 佇列,較淺的埠 443 佇列。 Apache 不會試著平衡收自每一個佇列中的連線數目。 當連線成為可用時,Apache 和作業系統會隨機取用任何佇列中的連線。

如果要處理這個實務,請新增較多的 Apache 程序來處理入埠連線。

控制 IBM HTTP Server 程序的數目

您可以利用多種配置指引來控制 IBM HTTP Server 程序的數目或同時支援的用戶端數目。 以下是最重要的指引:

  • StartServers
    指定伺服器啟動時,剛開始所要啟動的子程序數目。 隨著伺服器負荷量的增加,Apache 會自動增加子程序的數目。 如果您啟動 10 項程序(或伺服器),且有 20 個用戶端連接, 則 Apache 會自動偵測到多出的負荷量,並另外啟動 10 個伺服器,使得伺服器的總數達到 20 個。 Apache 會在 MaxClients 指引設定的限度內繼續建立更多的伺服器。
  • MaxClients
    指定一次所能執行的 Apache 程序數目上限。 限制 Apache 程序數目可避免超出您硬體功能的執行能力。

MaxClients 會有一個由 src/include/httpd.h 目錄中的 HARD_SERVER_LIMIT 指引所指定的上限。

附註IBM HTTP Server 第 1.3.26 版 HARD_SERVER_LIMIT 等於 4096。

影響利用 KeepAlive 特性處理要求的 IBM HTTP Server 程序可用性

HTTP 第 1.1 版有一個稱為連線保持作用中的特性。 在一個未保持作用中的連線中, 瀏覽器會啟動 TCP 連線,且會傳送單一要求給伺服器。 伺服器會回應,之後,再停止連線。 每一項要求中含有 TCP 連線的啟動與停止。 保持作用中特性會維護配置指引所控制的若干要求的連線。 此項控制可降低網路中與啟動與停止 TCP 連線有關的額外負荷。 伺服器假設在保持作用中連線時,瀏覽器會傳送另一項要求。 伺服器會試著讀取網路中的下一項要求。 當沒有下一個要求時,程序會中斷讀取作業,等待下一個要求。

請設想如下的典型情況:某使用者前往一個網站,結果提取了資訊頁面,並將它呈現在瀏覽器上。 使用者在閱讀頁面時持續逗留。 使用者沒有主動要求其他頁面,但伺服器中斷網路讀取來等待下一要求。 這個中斷的程序會無法用來處理其他用戶端所發出的要求。 使用者可以循著網站中的鏈結前進,稍作休息,並不再傳送其他要求。 您可以利用下列設定,將 IBM HTTP Server 配置成會在特定時段內等待下一個要求:

  • KeepAliveTimeout
    預設值是 15 秒。 這個設定表示伺服器會停止等候下一個要求,關閉非作用中用戶端的連線,並將程序提供給其他要求。

某些負荷較重的網站會完全停用 KeepAlive 特性。

請評估您網站的需求,並適當設定 KeepAliveTimeout。 請讓瀏覽器有足夠的時間能透過「保持作用中」連線要求取得頁面的所有元素, 且其等待使用者起始下個頁面要求的時間不會太長。在某些情況下將 KeepAliveTimeout 設為 5 秒,可說是平衡可用程序與將網路 I/O 降至最少間最好的折衷方法。

設定靜態內容的有效期限

您可以利用 mod_expires 設定文件有效期限,以減少網站連線要求。 如果瀏覽器已快取前一次的造訪,這個動作可能會儲存另一個網站連線要求。

 
尋找相關資訊

     (返回最上面)