Назад | Перейти на главную страницу

Ubuntu 16.04: чрезвычайно медленное разрешение DNS с использованием wget / curl и в python с использованием запросов (GET)

Я на Ubuntu 16.04, полностью обновлен. Обратите внимание на действительно очень медленное разрешение DNS на таких вещах, как curl / dns и внутри python. Я поискал, но ничего не помогло. Я пытаюсь создать приложение, для которого требуется быстрое время отклика, но из-за этой проблемы производительность моего приложения падает.

Я уже исправил это однажды (или, по крайней мере, я думал, что сделал), отключив ipv6, что сделало мой apt-get намного быстрее, и это, казалось, исправило все остальное на некоторое время - но внезапно оно вернулось к навсегда Решить. Не уверен, в чем заключается сделка, или если я обновил какой-то пакет, и он сбросил его. wget / curl на веб-сайте разрешается бесконечно, затем внезапно возникает, и бац. Я использую соединение 100M / 100M. Я должен упомянуть, что если я использую --inet4-only с помощью wget, это происходит мгновенно, заставляя меня думать, что это снова проблема с разрешением 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 (с использованием библиотеки запросов и, в частности, requests.packages.urllib3.connectionpool), он будет выполнять обычную 20-ю секунду при первом HTTP GET, но если я сделаю второй один или любой другой после этого, он быстро вспыхивает, как и должно быть.

Ниже приведены два tcpdumnps «медленной» версии (вы можете увидеть задержку в 20 секунд), а затем снова с тем, что вы ожидаете. Открытия, возвращающиеся в первом, очень странные.