Apache-2.2

減少由 CDN 引起的過多 DNS 查詢

  • May 17, 2012

情況就是這樣,我最近在一個 CDN 上設置了我的一些站點(特別是通過 Edgecast 的 MediaTemple 的 ProCDN)。設置完全正常,但幾天后我注意到:(每天 15K 平均到 600K) DNS查詢使用圖表

現在我的域/cdn 設置如下:

首先,我的設置是否會導致 DNS 查詢的過度增加?(具有 CDNS 設置的站點目前獲得的訪問者最少(每天可能少於 10 個))。

其次,如果這是完全正常的,有沒有辦法迴避這個?我有 1000 萬個通過 DNS 管理的查詢 很容易,按照目前的速度,我將在沒有槳的情況下爬上一條小溪……

我想我可以通過在靜態 IP 上託管每個域並將來源設置為靜態 IP 地址來迴避一半,但這遠非理想,因為我有很多站點。還有其他選擇嗎?

DNS 請求過多的主要原因是 TTL 太低。你的低,但不是低得離譜。(我在生產系統中看到 60 和 1 作為 TTL。)

digitaldawn.net.        1800    IN  A   109.73.163.166

www.digitaldawn.net.    3600    IN  A   208.94.146.71
www.digitaldawn.net.    3600    IN  A   208.94.146.70
www.digitaldawn.net.    3600    IN  A   208.94.146.80
www.digitaldawn.net.    3600    IN  A   208.94.146.81

cdn.digitaldawn.net.        1800    IN  CNAME   wpc.7b5c.edgecastcdn.net.
wpc.7b5c.edgecastcdn.net.   3600    IN  CNAME   gs1.wpc.edgecastcdn.net.
gs1.wpc.edgecastcdn.net.   14400    IN  A       93.184.221.133

除非您每天多次更改這些域指向的 IP 地址,否則最好將 TTL 更改為 86400(24 小時)之類的值。如果您有信心在提前衰減的 TTL 中至少有一段時間可能需要更改 IP 地址,則可以走得更高。

對於cdn.digitladawn.net子域,即使您將該 TTL 設置為 86400,也只會將上述輸出中的那一行記憶體 24 小時。如果wpc.7b5c.edgecastcdn.net響應發生變化,所有客戶端應該在​​最多一小時後獲取新值(暫時忽略那些忽略您的 TTL 的 DNS 伺服器。)

我看到的 DNS 請求過多的另外兩個原因是客戶端過多(例如,數千個邊緣 CDN 伺服器都在訪問您的權威名稱伺服器)或單個行為不端的客戶端(可能是您自己伺服器上的腳本)每秒進行數十次查找。這方面的一個例子可能是一個反向代理,它backend.digitaldawn.net用作其上游伺服器,並針對它必須代理的每個 HTTP 請求對該域進行 DNS 請求。將 DNS 記憶體添加到該伺服器或在生產環境中執行您自己的權威名稱伺服器可以解決此問題。

如果您可以獲得更好的名稱伺服器統計資訊(例如所有進行查找的客戶端的 IP 地址),那麼您可能能夠診斷出此類問題。

引用自:https://serverfault.com/questions/390004