(本文字數:5036,閱讀時長大約:7 分鐘)
當我第一次知道 DNS 時,我想它應該不會很復雜。不就是一些存儲在服務器上的 DNS 記錄罷瞭。有什麼大不瞭的?
但是教科書上隻是介紹瞭 DNS 的原理,並沒有告訴你實際使用中 DNS 可能會以多少種方式破壞你的系統。這可不僅僅是緩存問題!
所以我 在 Twitter 上發起瞭一個提問,征集人們遇到的 DNS 問題,尤其是那些一開始看起來與 DNS 沒什麼關系的問題。(“總是 DNS 問題”這個梗)
我不打算在這篇文章中討論如何解決或避免這些問題,但我會放一些討論這些問題的鏈接,在那裡可以找到解決問題的方法。
如果你的網絡比預期的要慢,這是因為某些原因導致 DNS 解析器變慢瞭。這可能是解析器負載過大或者存在內存泄漏等原因導致的。
我的路由器的 DNS 轉發器曾遇到過這個問題,導致我的所有 DNS 請求很慢。我通過重啟路由器解決瞭這個問題。
一些網友提到由於 DNS 查詢超時,他們的網絡請求需要耗時 2 秒多甚至 30 秒。這跟“網絡請求緩慢”問題類似,但情況要更糟糕,因為 DNS 請求就會消耗掉幾秒鐘時間。
Sophie Haskins 有一篇關於 Kubernete DNS 超時的博客文章 一次 Kube DNS 踩坑經歷。
一些網友提到在 /etc/resolv.conf
中設置 ndots:5
時會出現問題。
下面是從 這篇《Kubernetes 容器莢中 /etc/resolv.conf
裡設置 ndots:5
為什麼會拖慢你的程序性能》中引用的 /etc/resolv.conf
文件。
nameserver 100.64.0.10
search namespace.svc.cluster.local svc.cluster.local cluster.local eu-west-1.compute.internal
options ndots:5