
我正在建立監控系統,該系統將檢測目前正在處理多少(空閒)請求。我用來檢測這一點的方法是連接到 http://本機/伺服器狀態 .
問題是,如果 Apache 無法提供更多新連線(例如:MaxClients
到達頂部),那麼我該如何檢測 apache 統計資料? Apache 是否有足夠智慧來忽略MaxClients
來自本機的連線配置?
任何幫助表示讚賞。
答案1
我相信答案是否定的,有兩個原因(第三個原因很模糊):
假設請求
/server-status/
不受影響MaxClients
(但增加了客戶端計數)。然後,DoS apache 的請求就變得太容易了,因此合法的請求無法得到服務(而且由於它們可能會超出範圍MaxClients
,所以真正的請求不可能得到回應)Apache 可能會根據開啟的連線數(一個連線
:80
一次只能傳送一個請求,但KeepAlive
允許我們重複使用它,因此開啟一個 TCP 連線本質上是一個客戶端)來決定其客戶端計數。這將在讀取標頭之前進行檢查(如果有空間,它將委託處理請求。如果沒有,它將很快失敗)。每當我的連接超載時,
service httpd fullstatus
工作就會非常緩慢或根本不工作:-)
答案2
您可能需要編寫一個 apache 模組(或修改 mod_status),以便使用其他介面與 apache 伺服器通訊。您可能想要使用 posix 訊號和共享記憶體或檔案來請求和取得統計資料。