Почему в этом контейнере Fig/Docker такая медленная работа в сети?

Я использую Fig и Docker для создания контейнера приложения Rails. В настоящее время работает нормально, база данных и сервер запускаются. Когда у меня есть активное подключение к Интернету, все работает отлично. Однако, когда у меня нет подключения к Интернету, требуется много времени для подключения (20 секунд от браузера, запрашивающего страницу localhost) к серверу Rails/WEBrick.

Я посмотрел в журналы, и ничего необычного. Контейнеру требуется очень много времени, чтобы получить первоначальное соединение и, кроме того, много времени, чтобы передать данные.

1 ответ

Решение

Хорошо, я проверил это, и это было из-за разрешения DNS. Когда вы "отключаете" типичный Google DNS и вместо этого используете localhost, задержка исчезает. Вероятно, это связано с тем, что без этого Docker предполагает, что 127.0.0.1 - это некоторый адрес, который необходимо найти через NS, и тратит много времени на ожидание ответа (предположительно, поскольку он отправил его по UDP, он дольше ждет из-за потерянные / отброшенные пакеты). По этой же причине запрос не был записан сразу, поскольку DNS находится на нижнем уровне в сетевом стеке.

Другие вопросы по тегам