|
|
||
|
檢視 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 程序的數目或同時支援的用戶端數目。 以下是最重要的指引:
MaxClients 會有一個由 src/include/httpd.h 目錄中的 HARD_SERVER_LIMIT 指引所指定的上限。
影響利用 KeepAlive 特性處理要求的 IBM HTTP Server 程序可用性HTTP 第 1.1 版有一個稱為連線保持作用中的特性。 在一個未保持作用中的連線中, 瀏覽器會啟動 TCP 連線,且會傳送單一要求給伺服器。 伺服器會回應,之後,再停止連線。 每一項要求中含有 TCP 連線的啟動與停止。 保持作用中特性會維護配置指引所控制的若干要求的連線。 此項控制可降低網路中與啟動與停止 TCP 連線有關的額外負荷。 伺服器假設在保持作用中連線時,瀏覽器會傳送另一項要求。 伺服器會試著讀取網路中的下一項要求。 當沒有下一個要求時,程序會中斷讀取作業,等待下一個要求。 請設想如下的典型情況:某使用者前往一個網站,結果提取了資訊頁面,並將它呈現在瀏覽器上。 使用者在閱讀頁面時持續逗留。 使用者沒有主動要求其他頁面,但伺服器中斷網路讀取來等待下一要求。 這個中斷的程序會無法用來處理其他用戶端所發出的要求。 使用者可以循著網站中的鏈結前進,稍作休息,並不再傳送其他要求。 您可以利用下列設定,將 IBM HTTP Server 配置成會在特定時段內等待下一個要求:
某些負荷較重的網站會完全停用 KeepAlive 特性。 請評估您網站的需求,並適當設定 KeepAliveTimeout。 請讓瀏覽器有足夠的時間能透過「保持作用中」連線要求取得頁面的所有元素, 且其等待使用者起始下個頁面要求的時間不會太長。在某些情況下將 KeepAliveTimeout 設為 5 秒,可說是平衡可用程序與將網路 I/O 降至最少間最好的折衷方法。 設定靜態內容的有效期限您可以利用 mod_expires 設定文件有效期限,以減少網站連線要求。 如果瀏覽器已快取前一次的造訪,這個動作可能會儲存另一個網站連線要求。
(返回最上面)
|