Linux
CentOS 極慢的 DNS 查詢
出於某種原因,我的兩台機器開始遭受極其緩慢的 DNS 查找。
“主機”命令的範例定時輸出:
[root@ns507403 ~]# time host www.google.com www.google.com has address 172.217.5.4 www.google.com has IPv6 address 2607:f8b0:4006:80d::2004 real 0m3.050s user 0m0.000s sys 0m0.004s
無論使用哪個地址或進行多少次查找,查找似乎至少需要 3 秒。我見過的最高時間是 9 秒查找 www.paypal.com
我已經排除了 DNS 伺服器速度較慢的可能性,因為我在位於同一數據中心的 4 台其他伺服器上使用相同的 DNS 解析器,所有這些伺服器都執行良好。(< 1ms 查找)
我已經嘗試過的事情沒有成功:
- 添加
options single-request
到 /etc/resolv.conf- 添加
options single-request-reopen
到 /etc/resolv.conf- 使用禁用 IPv6
sysctl -w net.ipv6.conf.all.disable_ipv6=1
- 禁用 NetworkManager(我的伺服器上沒有安裝它)
這是我目前的 /etc/resolv.conf 文件:
nameserver 127.0.0.1 nameserver 213.186.33.99 search ovh.net
該
dig
命令似乎工作得很好,顯示查詢時間 0ms。有什麼想法可能導致這種情況嗎?我在兩台機器上都使用 CentOS 6。
127.0.0.1
是您的本地主機環回介面,這意味著您正在訪問自己的伺服器。由於各種原因,您的伺服器首先使用它來查找 DNS,並且由於您的伺服器不知道如何回答 DNS 查詢,因此您必須等到查詢超時並轉到第二個名稱伺服器。只需使用真實的 DNS 名稱伺服器作為唯一條目:
nameserver 213.186.33.99
為什麼你甚至有 127.0.0.1 作為名稱伺服器?
顛倒名稱伺服器的順序,它會加快速度。
nameserver 213.186.33.99 nameserver 127.0.0.1