ruby gserver で TCPServer を作成しました。
サーバーにリモートで接続するたびに、接続が確立されるまでに 2 ~ 4 秒かかります。
これは、リモート マシンから接続した場合にのみ発生します。
サービスを実行している同じマシンからの接続は、即時の応答を送信します。
同じマシンでの接続では、ローカルホスト経由で接続する場合とマシンの 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を実行してみました。
同じ動作 - サービスの接続に (長い) 遅延が発生します。
Q: それを修正する方法/TCPServer でルックアップを無効にする方法は?