2

Мы используем Docker для наших локальных сред разработки и развертываем его в Google Cloud Container Engine для производства. Наш производственный сервер SQL также находится в Google Cloud.Докеры медленных нелокальных доступа к базе данных

Когда наш контейнер работает на экземпляре контейнера, доступ к БД происходит молниеносно, но на наших локальных машинах работает очень медленно. Некоторые загрузки страниц, которые обычно занимают 1,9 с при производстве, доставляются до 25,0 и выше для наших местных жителей.

Я предположил, что близость, возможно, была проблемой, поэтому я попытался загрузить контейнер MySQL Docker на свой локальный компьютер и вместо этого подключил локальный доклерный веб-сервер к этому и был быстрым. Эта загрузка страницы 1.9s на производстве колебалась вокруг 1.8s теперь на моем местном.

Я решил, что экземпляр MySQL Docker будет запущен на одном из наших серверов в нашем офисе, но когда я загружаю эти страницы обратно до 25.0 и снова.

Казалось бы, что-то замедляет соединение, когда Докеру необходимо подключиться к любому ресурсу, не на моей локальной машине.

Мой docker info выход, если это помогает на всех:

Containers: 4 
Running: 2 
Paused: 0 
Stopped: 2 
Images: 203 
Server Version: 1.12.2 
Storage Driver: aufs 
Root Dir: /mnt/sda1/var/lib/docker/aufs 
Backing Filesystem: extfs 
Dirs: 209 
Dirperm1 Supported: true 
Logging Driver: json-file 
Cgroup Driver: cgroupfs 
Plugins: 
Volume: local 
Network: null bridge host overlay 
Kernel Version: 4.4.24-boot2docker 
Operating System: Boot2Docker 1.12.2 (TCL 7.2); HEAD : 9d8e41b - Tue Oct 11 23:40:08 UTC 2016 
OSType: linux 
Architecture: x86_64 
CPUs: 4 
Total Memory: 3.858 GiB 
Name: dev 
ID: AYO6:TL7P:XSST:VI5T:HKCC:QTOZ:HP3X:NKYQ:YCWT:THV2:AQM2:5XER 
Docker Root Dir: /mnt/sda1/var/lib/docker 
Debug mode (client): false 
Debug mode (server): true 
File Descriptors: 32 
Goroutines: 58 
System Time: 2016-10-26T22:46:19.218543394Z 
EventsListeners: 1 
Registry: https://index.docker.io/v1/ 
Labels: 
provider=virtualbox 

EDIT:

При попытке сузить проблему, я создал контейнер MySQL Docker на моем Macbook, а затем настроить наш Докетированный веб-сервер на другом компьютере (работает Ubuntu 14.04).

Доступ к базе данных был быстрым, но когда я отменил это (MySQL на машине Ubuntu, веб-сервер на Macbook), это было ужасно медленным снова. Странный. Я также попробовал обновить Docker на моем Macbook до 1.12, который удаляет VirtualBox из уравнения, и это также не решило проблему.

Было бы странно, что что-то происходит с сетевым адаптером для Docker? Я в тупике.

+0

Вы можете попытаться подключить веб-приложение к серверу базы данных по IP-адресу вместо имени хоста. Это устранит разрешение имени хоста или DNS из возможных причин. –

+0

Пробовал это тоже. Медленное разрешение DNS было чем-то, что я читал о более ранних версиях Docker, но, похоже, это не проблема в этом случае. –

+0

У меня такая же проблема. Освещение быстрого соединения на локальном хосте, но 30 секунд + при подключении на удаленном узле mysql (проверено облако Google и amazon aws) @ Justin Doyle – Renato

ответ

0

Не совсем то решение, на которое я надеялся, но на всякий случай кто-то другой сталкивается с этим и ударяет головой о стену.

Нашим решением было запустить локальные копии MySQL как службы Docker на наших локальных машинах и клонировать нашу базу данных. Это не идеальное решение, но оно устраняло время отклика 10-30 + секунд на каждом веб-запросе.

Я также обнаружил, что запуск контейнера Docker внутри виртуальной машины Linux и использование адаптера только для хоста также имеют большое значение (к сожалению, Docker для macOS не поддерживает адаптер только для хоста).

0

Какая версия Docker для Mac вы использовали? Потому что еще в то время, когда я испытал подобную проблему, теперь я нашел известную проблему для Docker для MAC, которая может быть связана с вами.

Этот вопрос был отображен в следующей.

Они представили также в workaround, но сейчас это должно быть достаточно, чтобы обновить версию Докер.

Смежные вопросы