Mar*_*o93 2 windows dns time cmd batch-file
我正在尝试获取我的DNS服务器的解析时间,但是我不确定自己是否做得很好。
首先,我尝试对DNS服务器IP进行ping操作,并捕获时间值,但是我不确定该值是否正确,因为我认为该值是发出请求并获得响应的时间该IP。
然后,我尝试进行两次不同的ping操作,一次像这样:"ping www.google.es"和第二次像:"ping googleIP"比较时间,但时间完全相同。
最终,我尝试搜索一个提供该信息的命令,但找不到。我尝试了, nslookup 但这不是我需要的答案。是否存在任何命令或任何方式来获取此信息?
谢谢。:)
更新: CJ Jackson正确地指出,在测量DNS解析时间时,必须考虑缓存。我认为这将是回答时的重点,并将重点放在测量命令运行时方面。但是可以肯定的是,您需要ipconfig /flushdns在两次运行之间清除本地DNS缓存,以真正衡量DNS服务器的性能。
nslookup对DNS服务器执行名称解析-因此这是使用的正确命令。但是,正如您已经提到的,它不会显示名称解析所花费的时间。可以使用Windows自己的方法做到这一点powershell:
powershell "Measure-Command { nslookup www.google.es }"
Run Code Online (Sandbox Code Playgroud)
现在,这在我的系统上输出...
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
Run Code Online (Sandbox Code Playgroud)
如果要以编程方式使用此值,则可以使用FINDSTR:
powershell "Measure-Command { nslookup www.google.es }" | FINDSTR "^Milliseconds"
Run Code Online (Sandbox Code Playgroud)
不幸的是,这仍然输出Non-authoritative answer:其通过印刷nslookup到STDERR。与分批,你不能重定向到NUL的powershell-而不是你需要重定向到$null:
powershell "Measure-Command { nslookup www.google.es 2> $null }" | FINDSTR "^Milliseconds"
Run Code Online (Sandbox Code Playgroud)
输出:
Milliseconds : 31
Run Code Online (Sandbox Code Playgroud)
另外,正如Stephan指出的那样,您还可以将重定向移到powershell调用之外,从而移出时间度量(这相当于我的时间差〜2ms)。由于powershell输出到STDOUT而不是STDERR:
powershell "Measure-Command { nslookup www.google.es }" 2>NUL | FINDSTR "^Milliseconds"
Run Code Online (Sandbox Code Playgroud)
您有一些免费或开放的工具来对您的 DNS 进行基准测试:
https://www.grc.com/dns/benchmark.htm
https://www.grc.com/dns/benchmark.htm
https://code.google.com/p/namebench/
或基于 WEB 的工具,例如:
http://network-speed.com/dnstime.php