Php Docker慢速非本地数据库访问

Php Docker慢速非本地数据库访问,php,mysql,docker,Php,Mysql,Docker,我们在本地开发环境中使用Docker,并将其部署到Google云容器引擎进行生产。我们的生产SQL server也在谷歌云上 当我们的容器在容器引擎上运行时,DB访问速度非常快,但在本地机器上运行时速度非常慢。有些页面加载通常需要1.9秒才能完成,但我们的本地页面加载会增加到25.0秒 我认为邻近性可能是一个问题,所以我尝试在本地机器上启动一个MySQL Docker容器,并将本地DockerWeb服务器连接到该容器,速度很快。在我的本地计算机上,1.9秒的生产页面负载现在徘徊在1.8秒左右 我

我们在本地开发环境中使用Docker,并将其部署到Google云容器引擎进行生产。我们的生产SQL server也在谷歌云上

当我们的容器在容器引擎上运行时,DB访问速度非常快,但在本地机器上运行时速度非常慢。有些页面加载通常需要1.9秒才能完成,但我们的本地页面加载会增加到25.0秒

我认为邻近性可能是一个问题,所以我尝试在本地机器上启动一个MySQL Docker容器,并将本地DockerWeb服务器连接到该容器,速度很快。在我的本地计算机上,1.9秒的生产页面负载现在徘徊在1.8秒左右

我决定让一个MySQL Docker实例在我们办公室的一台服务器上运行,但当我这样做时,这些页面负载又一次飙升到25.0

当Docker需要连接到任何不在本地机器上的资源时,似乎有什么东西正在减慢连接速度

My
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容器,然后在另一台机器上设置了我们的DockerWeb服务器(运行Ubuntu 14.04)。数据库访问速度很快,但当我扭转这种情况时(Ubuntu机器上的MySQL,Macbook上的web服务器),它又慢得可怕。奇怪。我还尝试将Macbook上的Docker更新为1.12,这将VirtualBox从等式中删除,但这也没有解决问题。看起来Docker的网络适配器可能有问题?我被难住了。

这并不是我所希望的解决方案,但只是为了以防万一其他人遇到这个问题,并且把头撞到墙上

我们的解决方案是在本地机器上作为Docker服务运行MySQL的本地副本,并将数据库克隆到其中。这不是一个理想的解决方案,但它消除了每个web请求10-30秒以上的响应时间


我还发现,在Linux虚拟机中运行Docker容器,并使用仅限主机的适配器也有很大的不同(不幸的是,Docker for macOS不支持仅限主机的适配器)。

您使用的Mac Docker版本是哪个? 因为以前我也遇到过类似的问题,现在我发现Docker for MAC的一个已知问题可能与您有关

  • "
此问题已映射到以下问题


他们还提供了一个,但现在更新Docker版本就足够了。

尝试在单个表上运行优化,或者如果您想在数据库中修复所有表,请参见此

您可以尝试通过IP地址而不是主机名将web应用程序连接到数据库服务器。这将消除主机名解析或DNS他可能是原因。我也尝试过。我在早期版本的Docker上读到过DNS解析速度慢的问题,但这似乎不是本例中的问题。我遇到了完全相同的问题。在localhost上启动快速连接,但在远程mysql主机上连接(尝试了google cloud sql和amazon aws)@Justin Doyle