В статье речь пойдет о рабочем окружении. Если Вы испытываете проблемы со скоростью работы на 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
), и испытываете медленную работу при запросах к локальным ресурсам, то данное решение может оказаться самым подходящим.
Заключение
Как показал поиск эта проблема не сильно освещена и тяжело поддается нахождению в виду того, что мало кто может подумать, что из-за таких проблем может быть упадок скорости работы виртуальных машин и/или контейнеров. Думаю, что дополнительное освещение данной проблемы поможет участить случаи "спотыкания" о нужную информацию.