当前位置:  开发笔记 > 开发工具 > 正文

使用BATCH(cmd)获取DNS解析时间

如何解决《使用BATCH(cmd)获取DNS解析时间》经验,为你挑选了1个好方法。

我正在尝试获取我的DNS服务器的解析时间,但是我不确定自己是否做得很好。

首先,我尝试对DNS服务器IP进行ping操作,并捕获时间值,但是我不确定该值是否正确,因为我认为该值是发出请求并获得响应的时间该IP。

然后,我尝试进行两次不同的ping操作,一次像这样:"ping www.google.es"和第二次像:"ping googleIP"比较时间,但时间完全相同。

最终,我尝试搜索一个提供该信息的命令,但找不到。我尝试了,  nslookup 但这不是我需要的答案。是否存在任何命令或任何方式来获取此信息?

谢谢。:)



1> zb226..:

更新: CJ 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:其通过印刷nslookupSTDERR。与分批,你不能重定向到NULpowershell-而不是你需要重定向到$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"


将重定向移动到`powershell`之外:`... google.es}“ 2> nul | findstr ...`,因此根本无法进行衡量。
确实-这解释了截然不同的时代。改编了我以前的评论。
推荐阅读
Chloemw
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有