即使 MaxClients 已滿,我也可以獲得 localhost/server-status 嗎?

即使 MaxClients 已滿,我也可以獲得 localhost/server-status 嗎?

我正在建立監控系統,該系統將檢測目前正在處理多少(空閒)請求。我用來檢測這一點的方法是連接到 http://本機/伺服器狀態 .

問題是,如果 Apache 無法提供更多新連線(例如:MaxClients到達頂部),那麼我該如何檢測 apache 統計資料? Apache 是否有足夠智慧來忽略MaxClients來自本機的連線配置?

任何幫助表示讚賞。

答案1

我相信答案是否定的,有兩個原因(第三個原因很模糊):

  1. 假設請求/server-status/不受影響MaxClients(但增加了客戶端計數)。然後,DoS apache 的請求就變得太容易了,因此合法的請求無法得到服務(而且由於它們可能會超出範圍MaxClients,所以真正的請求不可能得到回應)

  2. Apache 可能會根據開啟的連線數(一個連線:80一次只能傳送一個請求,但KeepAlive允許我們重複使用它,因此開啟一個 TCP 連線本質上是一個客戶端)來決定其客戶端計數。這將在讀取標頭之前進行檢查(如果有空間,它將委託處理請求。如果沒有,它將很快失敗)。

  3. 每當我的連接超載時,service httpd fullstatus工作就會非常緩慢或根本不工作:-)

答案2

您可能需要編寫一個 apache 模組(或修改 mod_status),以便使用其他介面與 apache 伺服器通訊。您可能想要使用 posix 訊號和共享記憶體或檔案來請求和取得統計資料。

相關內容