Ubuntu 16.04:使用 wget/curl 以及在 python 中使用请求(GET)的 DNS 解析速度极慢

Ubuntu 16.04:使用 wget/curl 以及在 python 中使用请求(GET)的 DNS 解析速度极慢

我使用的是 Ubuntu 16.04,已完全更新。注意到在 curl/dns 和 python 等工具上 DNS 解析速度非常非常慢。我进行了一些搜索,但没有任何解决方案。我正在尝试构建一个需要快速响应时间的应用程序,但由于这个问题,我的应用程序性能受到了严重影响。

我已经通过关闭 ipv6 修复了这个问题(或者至少我认为我已经修复了),这使我的 apt-get 速度更快,而且这似乎也解决了其他所有问题——但突然之间,它又需要很长时间才能解决。不确定是怎么回事,或者我是否更新了某个包并重置了它。网站上的 wget/curl 需要很长时间才能解决,然后突然间它解决了,然后砰的一声。我使用的是 100M/100M 连接。我应该提到,如果我用 wget 强制 --inet4-only,它是即时的,这让我认为这又是一个 ipv6 解析问题,但我已经验证了 ipv6 已关闭:

http://www.neuraldump.com/2016/11/how-to-disable-ipv6-in-ubuntu-16-04-xenial-xerus/

这是第一个转储。

00:14:19.512317 IP 10.10.10.10.57771 > google-public-dns-a.google.com.domain: 27177+ A? www.huffingtonpost.com. (40)
00:14:19.512323 IP 10.10.10.10.57771 > google-public-dns-a.google.com.domain: 4945+ AAAA? www.huffingtonpost.com. (40)
00:14:19.516199 IP google-public-dns-a.google.com.domain > 10.10.10.10.57771: 4945 3/0/0 CNAME www.huffingtonpost.com.huffpost.akadns.net., CNAME cs593.adn.mucdn.net., AAAA 2606:2800:221:18cd:1493:1b94:ea5:557 (154)
00:14:19.622120 IP resolver1-fs.opendns.com.domain > 10.10.10.10.57771: 27177 3/0/0 CNAME www.huffingtonpost.com.huffpost.akadns.net., CNAME cs593.adn.mucdn.net., A 152.195.54.95 (142)
00:14:24.517261 IP 10.10.10.10.57771 > google-public-dns-a.google.com.domain: 27177+ A? www.huffingtonpost.com. (40)
00:14:29.522261 IP 10.10.10.10.57771 > google-public-dns-a.google.com.domain: 27177+ A? www.huffingtonpost.com. (40)
00:14:34.527351 IP 10.10.10.10.50963 > google-public-dns-a.google.com.domain: 44146+ A? www.huffingtonpost.com. (40)
00:14:34.529688 IP google-public-dns-a.google.com.domain > 10.10.10.10.50963: 44146 3/0/0 CNAME www.huffingtonpost.com.huffpost.akadns.net., CNAME cs593.adn.mucdn.net., A 152.195.54.95 (142)
00:14:34.529730 IP 10.10.10.10.50963 > google-public-dns-a.google.com.domain: 8868+ AAAA? www.huffingtonpost.com. (40)
00:14:39.531792 IP 10.10.10.10.47933 > google-public-dns-a.google.com.domain: 44146+ A? www.huffingtonpost.com. (40)
00:14:39.629774 IP google-public-dns-a.google.com.domain > 10.10.10.10.47933: 44146 3/0/0 CNAME www.huffingtonpost.com.huffpost.akadns.net., CNAME cs593.adn.mucdn.net., A 152.195.54.95 (142)
00:14:39.629841 IP 10.10.10.10.47451 > google-public-dns-a.google.com.domain: 8868+ AAAA? www.huffingtonpost.com. (40)
00:14:39.696671 IP google-public-dns-a.google.com.domain > 10.10.10.10.47451: 8868 3/0/0 CNAME www.huffingtonpost.com.huffpost.akadns.net., CNAME cs593.adn.mucdn.net., AAAA 2606:2800:221:18cd:1493:1b94:ea5:557 (154)

这是第二个 tcpdump。如果我立即再次执行此操作(无论域名是否不同,结果都一样,我再次执行 huffingtonpost 是因为我使用的 tcpdump 过滤器的设置方式),结果会非常快:

00:15:09.575741 IP 10.10.10.10.47420 > google-public-dns-a.google.com.domain: 11015+ A? www.huffingtonpost.com. (40)
00:15:09.642151 IP google-public-dns-a.google.com.domain > 10.10.10.10.47420: 11015 3/0/0 CNAME www.huffingtonpost.com.huffpost.akadns.net., CNAME cs593.adn.mucdn.net., A 152.195.54.95 (142)
00:15:09.642229 IP 10.10.10.10.57342 > google-public-dns-a.google.com.domain: 40060+ AAAA? www.huffingtonpost.com. (40)
00:15:09.708198 IP google-public-dns-a.google.com.domain > 10.10.10.10.57342: 40060 3/0/0 CNAME www.huffingtonpost.com.huffpost.akadns.net., CNAME cs593.adn.mucdn.net., AAAA 2606:2800:221:18cd:1493:1b94:ea5:557 (154)

另一件奇怪的事情是,如果我在 python 中执行此操作(使用请求库,特别是请求.packages.urllib3.connectionpool),它将在第一个 HTTP GET 上执行正常的 20 秒停顿,但如果我执行第二个或之后的任何一次,它就会像它应该的那样快得惊人。

下面是两个“慢速”版本的 tcpdumnp(您可以看到 20 秒的延迟),然后再次显示您所期望的结果。第一个返回的 opendns 非常奇怪。

相关内容