2017-01-16 147 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

相關問題