我用 ruby gserver 创建了一个 TCPServer。
每次我远程连接到服务器时,需要 2-4 秒才能建立连接。
仅当我从远程计算机连接时才会发生这种情况。
来自运行该服务的同一台机器的连接将发送即时响应。
对于同一台机器上的连接,如果我通过 localhost 或通过机器 ip 连接没有区别。
我认为延迟取决于反向查找,但无法定位原因。
在 gserver.rb 中是第 263 行
client = @tcpServer.accept
这里出现延迟,我不知道这个方法是什么。
我将测试期间使用的所有机器添加到本地主机文件中。但这并没有改变。
使用 Webrick 时也会发生同样的情况,我也尝试设置
BasicSocket.do_not_reverse_lookup = true
以及直接在生成的服务器套接字上
Socket.do_not_reverse_lookup = true
以及在客户端连接套接字上
client.do_not_reverse_lookup = true
但这也没有改变延迟。
每当建立连接时,remote_host 和 remote_ip 的值都会被解析并在 hosts 文件中定义。
我尝试在 ubuntu 14.04 上运行 ruby 2.2.1 以及运行 debian wheezy 的 ruby 1.9.3。
相同的行为 - 连接服务的(长时间)延迟。
问:如何修复/禁用 TCPServer 上的查找?