Ми}{@лbI4

Блог хеллоуворлдщика

Ускоряем работу Docker и/или Vagrant

05.02.2021 lookup, dns, ssh, docker, vagrant, slow, workenv

В статье речь пойдет о рабочем окружении. Если Вы испытываете проблемы со скоростью работы на production, то эта статья Вам вряд ли поможет. Я бы даже назвал её абсолютно не подходящей для таких ситуаций.

Если вы заметили, что Docker или Vagrant быстрее работает с отключенной сетью интернет, а с ней наоборот работает медленно, то эта статья для вас.

Я столкнулся с этой проблемой после переезда: у меня изменился роутер. И первое на что я обратил внимание это то, что попытка подключения по локальным адресам занимала до 30 секунд и более, хотя раньше это работало намного быстрей. Так как я не самый продвинутый специалист в сетях и маршрутизации, то какое-то время, можно сказать, бился в закрытую дверь, хотя понимал, что дело именно в попытке разрешить локальный адрес через интернет или что-то вроде этого. Спустя год, после возникновения проблемы и различных проб и ошибок, я готов поделиться решением.

DNS

Первое из решений заключается в отключении попытки проверить имя хоста, к которому вы обращаетесь. В /etc/ssh/sshd_config указываем

UseDNS no

UseDNS это reverse dns lookups для SSH со всеми вытекающими. После его отключения у меня больше не было задержек в соединении с хостом.

Дополнительно рекомендую убедиться, что в настройках вашего роутера DNS сервер не равен DHCP шлюзу. Это приводит к "закольцовыванию" запроса до выхода тайм-аута. В полях для указания DNS серверов ничего не должно быть (пустые поля) или должны быть "нули" (0.0.0.0). Все зависит от роутера.

Также можно улучшить ситуацию, если прописать в настройках подключения (или настройках роутера) публичные DNS от Google или Яндекс.

Доменная зона

Второе из решений заключается в использовании зарезервированных доменных зон для локальных ресурсов, таких как например .test. Данная доменная зона не может быть использована в публичном доступе, поэтому это исключает "резольвинг" в публичную сеть, на что уходит время и ресурсы компьютера. Есть еще и другие зарезервированные локальные зоны, такие как: .example, .invalid и .localhost. Если вы использовали зоны вроде .local или .dev, или явно публичные (.ru, .com), и испытываете медленную работу при запросах к локальным ресурсам, то данное решение может оказаться самым подходящим.

Заключение

Как показал поиск эта проблема не сильно освещена и тяжело поддается нахождению в виду того, что мало кто может подумать, что из-за таких проблем может быть упадок скорости работы виртуальных машин и/или контейнеров. Думаю, что дополнительное освещение данной проблемы поможет участить случаи "спотыкания" о нужную информацию.

Полезные ссылки