上一篇「PChome 24h 連線會慢的原因...」寫到 DNS resolver 會倒在路邊,但沒寫會怎麼倒... 因為規格書上沒有寫當問不到要問的東西時要怎麼處理,所以每一家處理的方式都不太一樣。
我把對各 DNS resolver 查詢 100 次的結果放在 GitHub Gist 上:「Query 24h.pchome.com.tw」,大家都是回 SERVFAIL
,只是時間不一樣 (最後一個 x.xxxx total
的部份表示實際秒數,wall clock)。
先看這次的主角好了,HiNet 的 168.95.1.1
與 168.95.192.1
,同時也應該是 PChome 24h 服務使用人數最多的 DNS resolver。
這兩個 DNS resolver 在遇到問題時不會馬上回 SERVFAIL
,加上業界有小道消息說中華自己改了不少 code,所以跟一般的 open source software 行為不太一樣。由於看不到 PChome 端的 DNS packet,所以只能就行為來猜... 應該是在第一輪都查不到後,會先 random sleep 一段時間,然後再去問一次,如果第二次還是失敗的話才回應 SERVFAIL
。
這個 random sleep 看起來可能是 10 秒,因為數據上看起來最長的時間就是這個了。
SEEDNet 的 139.175.1.1 以及 Google 的 8.8.8.8
都沒這個問題,都會馬上回應 SERVFAIL
。
前陣子新出的 9.9.9.9
(參考「新的 DNS Resolver:9.9.9.9」) 則是有些特別的狀況,可以看到前面有三個 query 很慢 (第 2、3、5 三行),但後面的速度就正常了。可能是新加坡那邊有三台伺服器在服務 (目前我這邊測試的機器到 9.9.9.9
會到新加坡),在第一次遇到都沒有答案時會有特殊的演算法先確認,之後就會 cache 住?
所以各家 DNS resolver 反應都不太一樣,然後最大那家有問題 XD
24h.pchome.com.tw
慢一次,ecvip.pchome.com.tw
再慢一次,圖片的 a.ecimg.tw
再慢一次,一個頁面上多來幾個 domain 就會讓人受不了了 XD
其實我只要改成 8.8.8.8
或是改走 proxy.hinet.net
就可以解決啦,但還是寫下來吧 (抓頭)。
2 thoughts on “PChome 24h 連線會慢的原因... (續篇)”