我們正在為一個非常大的網站運行 Apache 2.2 伺服器。在過去的幾個月裡,我們一直有一些用戶報告回應時間緩慢,而其他用戶(包括我們的內部網路和家庭網路上的資源)沒有看到任何效能下降。
經過大量調查後,我們終於在我們的配置中發現了一個「Deny from none」語句,該語句導致反向 DNS 查找(逾時),解決了我們的大部分問題,但我們仍然有一些客戶在Apache 日誌(在日誌格式中使用%D),圖像、CSS、JavaScript 和其他靜態內容的請求處理時間> 300 秒。
我們檢查了所有拒絕/允許語句是否再次出現“none”,以及我們知道的所有其他會導致反向DNS 查找的事情(例如在重寫規則中使用“REMOTE_HOST”,在重寫規則中使用%a 而不是%h)我們的日誌格式配置)並驗證 HostnameLookups 設定為「關閉」。
順便說一句,我們還驗證了遇到此問題的人的反向 DNS 查找不會逾時 - 所以我相當確定 DNS 在這種情況下不是問題。
我已經沒有主意了。是否有人可以向我指出我可能遺漏的任何 Apache 配置方案,這些方案會導致僅對某些使用者的靜態內容請求時間花費很長時間?
先感謝您。
答案1
當我發現這種事情時,我首先檢查:
- 域名系統。使用類似
tcpdump
或 的網路轉儲wireshark
來檢查這一點,而不僅僅是查看設定檔。如果你確定這不是問題所在 - 對於這些使用者來說,traceroute / ping 是什麼樣的?他們都有一些共同點嗎?我見過一個壞的 NAT 盒子會帶來無盡的悲傷。我還看到用戶的本地流量導致我的網站看起來比沒有加載連接的其他網站慢,但他們注意到我的網站很慢。
- 防火牆/隧道。他們是否在做一些愚蠢的事情,例如阻止所有 ICMP?他們在隧道裡嗎?如果兩者都是,那麼 PMTU 發現很可能以某種奇怪的方式超時。
請注意,300 秒的回應時間可能意味著 Apache 放棄了它們,而不是表示它已得到服務。 5分鐘對於伺服器來說已經是很長的等待時間了,但是對於客戶端來說等待這麼久就更瘋狂了。