Apache-2.2
當 Apache 到達 MaxClients 時,使用者會看到什麼?
有時,在我的 Apache 錯誤日誌中,我會發現:
[error] server reached MaxClients setting, consider raising the MaxClients setting
由於記憶體不足的問題,我過去故意將 MaxClients 降低(降至 60),但我想確切地知道當伺服器達到此限制時使用者端發生了什麼。他們正在訪問的頁面是否需要更長的時間才能載入?他們會收到某種錯誤消息嗎?
首先,客戶端請求將排隊,直到 apache 伺服器上有一個空閒的程序/執行緒。因此,客戶端將看到載入頁面的延遲。有關詳細資訊,請參閱
MaxClients
參數文件。當放置在積壓隊列中時,客戶端請求最終會在客戶端超時。然後使用者將在其瀏覽器中看到一個錯誤頁面,告訴伺服器需要很長時間才能給出答案。例如,Firefox 中的預設超時值為300 秒。或者使用者會在超時前取消請求…
然後,如果伺服器收到更多請求並且無法及時獲得空閒程序/執行緒,則
ListenBacklog
隊列可能會被填滿(預設為 511 個排隊請求),並且任何後續請求都不會得到服務。然後瀏覽器會告訴使用者它無法連接到網站,就像網站完全關閉一樣。在 TCP 實現中,此積壓隊列在作業系統級別進行管理。在 linux 下,
listen
手冊頁將為您提供有關其管理方式的更多資訊。這是另一個關於 linux 和 BSD 系統中 TCP 積壓隊列的非常有見地的讀物。