【发布时间】:2017-03-09 11:19:51
【问题描述】:
我们将 Docker 用于本地开发环境,并部署到 Google Cloud Container Engine 进行生产。我们的生产 SQL 服务器也在 Google Cloud 上。
当我们的容器在 Container Engine 上运行时,数据库访问速度快如闪电,但在我们的本地机器上运行时却非常慢。一些在生产环境中通常需要 1.9 秒的页面加载时间在我们的本地用户上达到了 25.0 秒以上。
我认为接近可能是个问题,所以我尝试在本地机器上启动 MySQL Docker 容器,然后将本地 Dockerized Web 服务器连接到该容器,速度很快。生产环境中 1.9 秒的页面加载现在在我的本地设备上徘徊在 1.8 秒左右。
我决定在我们办公室的一台服务器上运行一个 MySQL Docker 实例,但是当我这样做时,这些页面负载飙升至 25.0 秒并再次上升。
当 Docker 需要连接到不在我本地机器上的任何资源时,似乎有什么东西正在减慢连接速度。
如果有帮助,我的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
编辑:在尝试缩小问题范围时,我在我的 Macbook 上设置了 MySQL Docker 容器,然后在另一台机器上设置了我们的 Dockerized Web 服务器(运行 Ubuntu 14.04)。数据库访问速度很快,但是当我将其反转(Ubuntu 机器上的 MySQL,Macbook 上的 Web 服务器)时,它又慢得可怕。奇怪的。我还尝试将我的 Macbook 上的 Docker 更新到 1.12,这从等式中删除了 VirtualBox,但这也没有解决问题。似乎 Docker 的网络适配器出现了问题?我被难住了。
【问题讨论】:
-
您可以尝试让 Web 应用程序通过 IP 地址而不是主机名连接到数据库服务器。这将从可能的原因中消除主机名解析或 DNS。
-
也试过了。我在早期版本的 Docker 中读到过慢 DNS 解析,但在这种情况下似乎不是问题。
-
我遇到了完全相同的问题。在 localhost 上快速连接,但在远程 mysql 主机上连接时需要 30 秒以上(尝试过 google cloud sql 和 amazon aws)@Justin Doyle