【发布时间】:2011-09-30 02:44:53
【问题描述】:
当我通过一个调制解调器/ISP 连接时,我的 Ubuntu 机器上的 DNS 查找速度很慢。我按照说明(例如那些 here)使用持久 DNS 缓存,所以我不重复 DNS 查找,一切都变得更快了。但是,我注意到当在 mercurial 上拉/推 repos 时,即使传输非常小的更改也会非常缓慢。深入研究,我发现所有时间都被_socket.getaddrinfo 占用,即DNS 查找。为什么即使所有 Web 浏览器都使用 /etc/pdnsd.conf 中的信息来使用旧的 dns 查找,pythons 套接字却没有。如何让 mercurial 使用缓存查找?
更新
也可能是因为getaddrinfo试图同时获取ipv4和ipv6地址,只有在没有找到ipv6地址后才返回答案。我不确定如何检查这一点,即延迟是由于 ipv6、非持久性还是两者兼而有之。
更新
这可能与 ipv6 请求有关,正如答案 here 中所建议的那样,一旦有机会,我将不得不检查一下。
【问题讨论】:
标签: python sockets caching mercurial dns