我正在使用Fig和 Docker 来容器化示例 Rails 应用程序。目前,一切正常,数据库和服务器已启动。当我有有效的互联网连接时,一切都运行良好。但是,当我没有 Internet 连接时,需要很长时间才能连接到 Rails/WEBrick 服务器(从浏览器请求本地主机页面需要 20 秒)。
我查看了日志,没有发现任何异常。只是容器接收初始连接需要很长时间,而且传输数据也需要很长时间。
最佳答案
好的,我测试了一下,是DNS解析的原因。当您“禁用”典型的 Google DNS 并使用本地主机时,延迟就会消失。这可能是因为如果不这样做,Docker 会假设 127.0.0.1 是需要通过 NS 查找的某个地址,并花费大量时间等待响应(大概是因为它是通过 UDP 发送的,所以等待时间更长,因为丢失/丢弃数据包)。这也是没有立即记录请求的原因,因为 DNS 位于网络堆栈的较低级别。
关于ruby-on-rails - 为什么这个 Fig/Docker 容器中的网络速度这么慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24991655/