我正在尝试获取DNS服务器的解析时间,但我不确定我做得好。
首先,我尝试对我的DNS服务器IP进行ping操作,并捕获时间值,但我不确定它是否是正确的值,因为我认为此值是发出请求并获取的时间对此IP的回应。
然后我尝试制作两个不同的ping,一个像这样:"ping www.google.es"
,第二个像:"ping googleIP"
并比较时间,但时间完全相同。
最后,我尝试搜索一个给我这个信息但却找不到它的命令。我尝试了nslookup
,但这不是我需要的答案。是否有任何命令或任何方式来获取此信息?
谢谢。 :)
答案 0 :(得分:5)
更新: C.J. Jackson正确地指出,在衡量DNS解析时间时,您必须考虑缓存。我认为在回答并关注测量命令运行时方面时,这将是一个给定的。但可以肯定的是,您需要ipconfig /flushdns
清除运行之间的本地DNS缓存,以真正衡量您的DNS服务器性能。
nslookup
对DNS服务器执行名称解析 - 因此这是正确的命令。但正如您已经指出的那样,它不会显示名称解析所需的时间。使用Windows'可以做到这一点。拥有powershell
:
powershell "Measure-Command { nslookup www.google.es }"
现在,这个输出在我的系统上......
Non-authoritative answer:
Days : 0
Hours : 0
Minutes : 0
Seconds : 0
Milliseconds : 31
Ticks : 317898
TotalDays : 3,679375E-07
TotalHours : 8,8305E-06
TotalMinutes : 0,00052983
TotalSeconds : 0,0317898
TotalMilliseconds : 31,7898
如果您想以编程方式使用此值,请使用FINDSTR
进行过滤:
powershell "Measure-Command { nslookup www.google.es }" | FINDSTR "^Milliseconds"
不幸的是,这仍然会输出Non-authoritative answer:
nslookup
打印到STDERR
。与批量相比,您无法重定向到NUL
中的powershell
- 而是需要重定向到$null
:
powershell "Measure-Command { nslookup www.google.es 2> $null }" | FINDSTR "^Milliseconds"
输出:
Milliseconds : 31
或者,正如Stephan所指出的,您还可以将重定向移到powershell
调用之外,从而超出时间测量(在我的结束时相差约2ms)。这有效,因为powershell
输出到STDOUT
而不是STDERR
:
powershell "Measure-Command { nslookup www.google.es }" 2>NUL | FINDSTR "^Milliseconds"
答案 1 :(得分:0)