我曾经在通过一个调制解调器/ISP 连接时,在我的Ubuntu机器上进行DNS查找非常缓慢。我按照指示(例如这里)使用持久性DNS缓存,因此我不会重复进行DNS查找,一切都变得更快了。然而,我注意到,在mercurial上拉/推回repos时,即使是传输非常小的更改也非常缓慢。深入研究后,我发现所有时间都被
_socket.getaddrinfo
占用,即DNS查找。为什么即使所有Web浏览器都使用/etc/pdnsd.conf
中的信息来使用旧的DNS查找,Python套接字却没有这样做。如何让mercurial使用缓存的查找?
更新
这也可能是因为getaddrinfo尝试获取ipv4和ipv6地址,并且仅在无法找到ipv6地址之后返回答案。但我不确定如何检查这一点,即延迟是由于ipv6,非持久性还是两者都有。
更新
可能与ipv6请求有关,如此处中所建议的那样,我将在有机会时进行检查。