将应用程序从主机移到docker会增加5秒的HTTP延迟

2024-05-29 02:35:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我发现,当发出HTTP请求时,我注意到一个应用程序的性能很差(额外的延迟5秒)。通过大量的测试/测试,我意识到将应用程序移出docker到主机中消除了奇怪的HTTP延迟。

我正在使用alperlinux作为docker映像,ubuntu正在托管主机。

Docker信息:

Docker版本1.11.2,构建b9f10c9

      "NetworkSettings": {
        "Bridge": "",
        "SandboxID": "3ab81b8a66a99c6e9b1a1f49c5410d8260db37eee96c9231c0d83c1b40f84fa5",
        "HairpinMode": false,
        "LinkLocalIPv6Address": "",
        "LinkLocalIPv6PrefixLen": 0,
        "Ports": {
            "8084/tcp": null
        },
        "SandboxKey": "/var/run/docker/netns/3ab81b8a66a9",
        "SecondaryIPAddresses": null,
        "SecondaryIPv6Addresses": null,

        "EndpointID": "464acfb299941bbd301051ea05451823a7e527161185570c00f8569ce2afde88",
        "Gateway": "172.17.0.1",
        "GlobalIPv6Address": "",
        "GlobalIPv6PrefixLen": 0,
        "IPAddress": "172.17.0.3",
        "IPPrefixLen": 16,
        "IPv6Gateway": "",
        "MacAddress": "02:42:ac:11:00:03",
        "Networks": {
            "bridge": {
                "IPAMConfig": null,
                "Links": null,
                "Aliases": null,
                "NetworkID": "32ebc75bc4c98106c6775905906723405c58bc3de914283234a8e1273cba7193",
                "EndpointID": "464acfb299941bbd301051ea05451823a7e527161185570c00f8569ce2afde88",

                "Gateway": "172.17.0.1",
                "IPAddress": "172.17.0.3",
                "IPPrefixLen": 16,
                "IPv6Gateway": "",
                "GlobalIPv6Address": "",
                "GlobalIPv6PrefixLen": 0,
                "MacAddress": "02:42:ac:11:00:03"
            }
        }
    }

我在码头上开了一个集装箱,没有任何幻想:

^{pr2}$

我的代码(python)是整个请求周期所需时间的两倍:

^{pr3}$

恒定时间为5-6秒,在容器外,其不到一秒。

我做了一个练习,从容器内部检查DNS和tcpdump。从那里看来没有什么有趣的报道。DNS看起来很好,包捕获报告0.2秒请求次数。

我从包捕获中发现的唯一有趣的事情是,从http.request被打电话了。

我相信这里有一个码头工人网络的错误配置。如果还有什么需要补充的信息,请告诉我。我们正在使用docker来提供20个其他服务,没有这个问题。

谢谢!


Tags: docker信息应用程序httpnullacgatewayipaddress
1条回答
网友
1楼 · 发布于 2024-05-29 02:35:46

我不知道你是否还需要这些信息。我们也看到了类似的情况,升级Docker解决了这个问题。在

由于不知道问题的原因,我做了一点挖掘,我发现:

https://github.com/docker/docker/issues/20661

简而言之,这与docker在尝试对ipv4执行相同操作之前尝试解析ipv6 dns有关。读一读。你可能比我更明白。在

我希望这对你有帮助。在

相关问题 更多 >

    热门问题