2

我正在使用Fig和 Docker 来容器化一个示例 Rails 应用程序。目前,它工作正常,数据库和服务器启动。当我有一个活跃的互联网连接时,一切都很好。但是,当我没有 Internet 连接时,连接到 Rails/WEBrick 服务器需要很长时间(从浏览器请求 localhost 页面开始需要 20 秒) 。

我查看了日志,没有任何异常。容器接收初始连接需要很长时间,传输数据也需要很长时间。

4

1 回答 1

4

好的,我测试过了,是因为DNS解析。当您“禁用”典型的 Google DNS 并改为使用 localhost 时,延迟就会消失。这可能是因为不这样做 Docker 假设 127.0.0.1 是某个需要通过 NS 查找的地址,并花费大量时间等待响应(可能是因为它通过 UDP 发送它,它等待的时间更长,因为丢失/丢弃的数据包)。这也是为什么没有立即记录请求的原因,因为 DNS 在网络堆栈上处于较低级别。

于 2014-08-29T06:22:03.293 回答