2017-01-16 101 views
0

我遇到了一个小问题,希望有人能够启发我如何使用我的开发环境解决这个问题。Vagrant Docker Nginx解决缓慢

我正在使用MacOS,这是使用共享文件夹泊坞窗,性能差。

我最初使用中间码头容器与同步同步,但有问题。 (同步停止不可预知,没有任何错误输出等等)

我创建了一个虚拟机,在其中启动docker。 其中我只有一个最小的设置与小php和nginx配置。 (用于从主机开发IDE内执行代码生成)。 Nginx配置为将https转发到Docker容器内的http请求。 (和摆脱80XX端口。

流浪不转发任何端口,可通过nginx的服务器只能访问从端口80和443

在泊坞窗我有一个自编译nginx的容器(含几个插件用于附加功能,如提供压缩文件(位于未压缩内容旁边)等等),几个php7.1-fpm实例,队列工作者,mysql主从数据库等。 环境像我们的生产系统一样构建。 对我们来说尽可能接近是很重要的

唯一的核心区别是第一个位于我的主机之间的nginx和虚拟机的路由等

我的核心问题是目前对第一个nginx服务器的请求是极端缓慢,我真的不知道为什么。 在浏览器中检查我可以看到连接的6条规定:

  1. 排队(0)
  2. 陈旧(5-15s)
  3. 解决域名(5-30s)
  4. 请求发送(0.000077多个)
  5. 等待响应(0.2秒)
  6. 下载响应(0.0009s)

目前我的工作最大的问题是第2步和第3步,它只出现在第一个连接和每个正在进行的连接中,这个连接在最后一次请求后延迟了1分钟。

我也没有得到的是为什么它试图解决的领域。

但首先要事。 我的继承人流浪汉设置的部分(仅限于重要的部分:

# -*- mode: ruby -*- 
# vi: set ft=ruby : 
Vagrant.configure("2") do |config| 
... 
    #Network, Port Mapping, Hostname 
    config.vm.network     "forwarded_port", guest: 3306, host: 3306 
    config.vm.network     "forwarded_port", guest: 6379, host: 6379 
    config.vm.network     "private_network", ip: "192.168.56.142" 
    config.hostsupdater.aliases   = ["app.dev", "errbit.dev", "redis.dev", "mailcatcher.dev", "pma.dev", "statsd.dev"] 
    config.vm.hostname     = "docker.test" 
... 
end 

我使用hostmanager管理HOSTFILE,因为我有一个使用匹配的域名,但对于其他服务(PMA ...)另一个开发环境。 我发现hostmanager很有用,因为它从vagrant stop上的hostfile中删除条目。

这里是我的HOSTFILE

## 
# Host Database 
# 
# localhost is used to configure the loopback interface 
# when the system is booting. Do not change this entry. 
## 
127.0.0.1 localhost 
255.255.255.255 broadcasthost 
::1    localhost 

192.168.56.142 docker.test # VAGRANT: d8fa44be6d190c05689a5d1e3c0b4281 (default)/ca8de87a-7a95-4c7d-97df-2a1a4d606dad 
192.168.56.142 app.dev # VAGRANT: d8fa44be6d190c05689a5d1e3c0b4281 (default)/ca8de87a-7a95-4c7d-97df-2a1a4d606dad 
192.168.56.142 errbit.dev # VAGRANT: d8fa44be6d190c05689a5d1e3c0b4281 (default)/ca8de87a-7a95-4c7d-97df-2a1a4d606dad 
192.168.56.142 redis.dev # VAGRANT: d8fa44be6d190c05689a5d1e3c0b4281 (default)/ca8de87a-7a95-4c7d-97df-2a1a4d606dad 
192.168.56.142 mailcatcher.dev # VAGRANT: d8fa44be6d190c05689a5d1e3c0b4281 (default)/ca8de87a-7a95-4c7d-97df-2a1a4d606dad 
192.168.56.142 pma.dev # VAGRANT: d8fa44be6d190c05689a5d1e3c0b4281 (default)/ca8de87a-7a95-4c7d-97df-2a1a4d606dad 
192.168.56.142 statsd.dev # VAGRANT: d8fa44be6d190c05689a5d1e3c0b4281 (default)/ca8de87a-7a95-4c7d-97df-2a1a4d606dad 
10.211.55.26 docker.test.shared docker.test #prl_hostonly shared 

VM码头工人nginx的HOSTFILE:

server { 
    listen 443 ssl; 
    server_name     pma.dev; 

    ssl_certificate    /vagrant/etc/ssl/server.crt; 
    ssl_certificate_key   /vagrant/etc/ssl/server.key; 
    ssl_protocols    TLSv1 TLSv1.1 TLSv1.2; 
    ssl_ciphers     ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AES:RSA+3DES:!ADH:!AECDH:!MD5:!DSS; 
    ssl_prefer_server_ciphers on; 

    location/{ 
     proxy_pass http://localhost:8090; 
     proxy_set_header Host $host; 
    } 
} 

我采取任何意见纳入考虑任何方向的帮助。 我也已经尝试了几种方法,但目前还无法解决它。 我希望有人能给我一个线索,我需要配置不同的东西。 如果您需要更多信息请不要犹豫,问。

回答

0

用Wireshark检查网络流量后发现问题。 我在app.dev上执行了一次挖掘,我发现检测到ip 127.0.53.53。 在查看Wireshark之​​后,我发现每个对.dev域的访问都被查询到公共DNS服务器上,而不是本地主机文件。

看来,与macOS的每个查询历史.dev域,而不是检查主机文件。 由于这个请求需要额外的普通长度。 我将所有域名切换到.test

相关问题