減少由 CDN 引起的過多 DNS 查詢
情況就是這樣,我最近在一個 CDN 上設置了我的一些站點(特別是通過 Edgecast 的 MediaTemple 的 ProCDN)。設置完全正常,但幾天后我注意到:(每天 15K 平均到 600K)
現在我的域/cdn 設置如下:
- 我有digitaldawn.net的自定義名稱伺服器
- 所有補充域都指向這些名稱伺服器
- 所有補充域都將 cnames 設置為cdn.domain.com
- 這些 cnames 指向 Edgecast Origins,即。http://wpc.XXXX.edgecastcdn.net/XXXXXX
- edgecast 來源本身從*http://www.domain.com:80>*獲取內容。*IE。<http://cdn.domain.com/an-image.jpg將是http://www.domain.com/an-image.jpg的內容分發版本*
首先,我的設置是否會導致 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 地址),那麼您可能能夠診斷出此類問題。