我对本地主机上的某个地址的某些请求存在延迟问题。我怀疑 DNS 查找出了问题。
有没有办法可以分析 OSX 上的 DNS 查找?例如,在尝试进行查找时,是否有日志可以供我查看?
答案1
您可以运行 tcpdump 来转储 DNS 数据包并查看 DNS 流量的行为方式。在终端中输入以下内容应该可以解决问题:
sudo tcpdump -i en0 -n udp port 53
应该-i en0
引用您的活动接口。在 Mac 上,这通常是en0
,但如果您同时拥有以太网插孔和无线适配器,则可能需要使用en1
。这将产生如下输出(为了清晰起见,我将长行换行了):
22:19:46.160992 IP 192.168.1.143.61150 > 192.168.1.1.53:
60237+ A? www-google-analytics.l.google.com. (51)
22:19:46.184272 IP 192.168.1.1.53 > 192.168.1.143.61150:
60237 11/0/0 A 74.125.225.233, A 74.125.225.238, A 74.125.225.224,
A 74.125.225.225, A 74.125.225.226, A 74.125.225.227, A 74.125.225.228,
A 74.125.225.229, A 74.125.225.230, A 74.125.225.231, A 74.125.225.232 (227)
192.168.1.143 > 192.168.1.1
此转储显示我的计算机向路由器 ( )发出了请求22:19:46.160992
。我的路由器在 处回复了22:19:46.184272
响应。因此,此 DNS 请求大约花费了 23 毫秒。
如果您怀疑 DNS 性能存在问题,请运行 tcpdump 命令并查找您感兴趣的服务器的 DNS 请求。如果您看到长时间延迟或多次尝试,则说明存在问题。
答案2
我对本地主机上某个地址的某些请求存在延迟问题。
当您说“localhost”时,您真的是指 localhost 吗?如 127.0.0.1 或 ::1?
您可以使用 tcpdump 来查找解析器流量,正如前面的发帖人所建议的那样,但如果您实际上指的是 localhost,那么很有可能该名称甚至没有使用 DNS 进行解析。