Nit*_*amk 9 c++ windows dns performance getaddrinfo-a
我正在使用getaddrinfo在Windows上从C++进行DNS查询.我以前使用Windows API DnsQuery并且工作正常,但是当我向我的软件添加IPv6支持时,我切换到了getaddrinfo.从那以后,我见过以下内容:
我的问题是有时候getaddrinfo需要很长时间才能完成.来自getaddrinfo的典型响应只需几毫秒,但大约是10000次的1次,需要更长的时间,在某些情况下大约需要15秒,但有几次需要花费几分钟.
我在服务器上运行Wireshark并分析了我的应用程序调试日志,并看到以下内容:
这里奇怪的是,实际的DNS查询只需要十分之一秒,但getaddrinfo实际执行的时间要长得多.
许多用户已经报告了这个问题,因此它不是我的机器特有的.
那么getaddrinfo除了联系DNS服务器之外还做什么呢?
编辑:
编辑2
Windows 有一个执行 DNS 缓存的本地守护程序。您对 getaddrinfo() 的调用将被路由到该守护进程,该守护进程可能在向您的 DNS 服务器提交查询之前检查其缓存。
有关禁用缓存的详细信息,请参阅Windows 知识库文章 318803 。
[编辑]
在我看来,您的 Windows Server 2003 实例似乎没有正确配置 IPv6。一旦 IPv6 查找超时,就会回退到 IPv4。可能有帮助的知识库文章包括:
不幸的是,我无法访问任何 Windows 服务器,因此我无法自己测试/复制它。
| 归档时间: |
|
| 查看次数: |
5578 次 |
| 最近记录: |