我们正在将Docker用于本地开发环境,并部署到Google Cloud Container Engine进行生产。我们的生产SQL服务器也在Google Cloud上。
当我们的容器在Container Engine实例上运行时,数据库访问速度很快,但在本地计算机上运行时速度非常慢。通常在生产时花费1.9秒的一些页面加载在我们的当地人上升到了25.0秒。
我认为接近可能是一个问题,因此我尝试在本地计算机上启动MySQL Docker容器,并将本地Dockerized Web服务器连接到该容器,并且速度很快。那个1.9秒的生产页面负载现在在我当地徘徊在1.8s左右。
我决定在我们办公室的一台服务器上运行一个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的网络适配器,或许会发生什么事情?我很难过。
答案 0 :(得分:0)
不是我真正希望的解决方案,但万一其他人遇到这个问题并且正在撞墙。
我们的解决方案是在我们的本地计算机上运行MySQL的本地副本作为Docker服务,并将我们的数据库克隆到其中。这不是一个理想的解决方案,但它在每个网络请求上都消除了10-30秒的响应时间。
我还发现在Linux VM中运行Docker容器,并且使用仅主机适配器也产生了很大的不同(遗憾的是,对于macOS,Docker不支持仅主机适配器)。
答案 1 :(得分:0)
您使用的Docker for Mac版本是哪个? 因为在我遇到类似问题的时候,现在我发现Docker for MAC的一个已知问题可能与你有关。
此问题已映射到以下问题。
他们还提供了workaround,但现在它应该足以更新Docker版本。
答案 2 :(得分:0)
尝试在单个表上运行OPTIMIZE,或者如果要在数据库中修复所有表,请参见此answer