gpt4 book ai didi

nginx - Vagrant Docker Nginx 解决缓慢

转载 作者:行者123 更新时间:2023-12-02 19:38:22 25 4
gpt4 key购买 nike

我遇到了一个小问题,希望有人能告诉我如何用我的开发环境解决这个问题。

我正在使用 MacOS,即使用带有共享文件夹的 docker,性能很差。

我最初使用了一个带有统一同步的中间 docker 容器,但遇到了问题。 (同步停止不可预知,没有任何错误输出等)

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

Vagrant 不转发任何端口,只能通过 nginx 服务器从端口 80 和 443 访问。

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

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

我的核心问题目前是对第一个 nginx 服务器的请求非常慢,我真的不知道为什么。
在浏览器检查器中,我可以看到 6 种连接状态:

  • 排队 (0s)
  • 陈旧(5-15 秒)
  • 解析域(5-30 秒)
  • 请求发送 (0.000077s)
  • 等待响应(0.2s)
  • 下载响应 (0.0009s)

  • 我目前工作的最大问题是第 2 步和第 3 步,它们仅出现在第一个连接中,并且每个正在进行的连接在最后一个请求后延迟超过 1 分钟。

    我也不明白为什么它会尝试解析域。

    但首先要做的事情。
    这是我的 Vagrant 设置的一部分(只有重要的部分:
    # -*- 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

    我正在使用主机管理器来管理主机文件,因为我有另一个使用匹配域名但用于另一个服务(pma ...)的开发环境。
    我发现 hostmanager 很有用,因为它会在 vagrant stop 时从主机文件中删除条目。

    这是我的主机文件
    ##
    # 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 Docker nginx 主机文件:
    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;
    }
    }

    我会考虑任何建议以寻求任何方向的帮助。
    我也已经尝试了几种方法,但到目前为止无法解决。
    我希望有人能给我一个线索,我需要配置不同的东西。
    如果您需要更多信息,请随时询问。

    最佳答案

    使用 Wireshark 检查网络流量后,我发现了问题。
    我对 app.dev 进行了挖掘,我发现检测到了 ip 127.0.53.53。
    在查看了 Wireshark 之后,我发现对 .dev 域的每次访问都会查询到公共(public) dns 服务器而不是本地主机文件。

    似乎使用 macOS 时,每个查询都使用 .dev 域,而不是检查主机文件。
    由于这个请求需要额外的普通时间。
    我将所有域切换到 .test

    关于nginx - Vagrant Docker Nginx 解决缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41671065/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com