1

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 でルックアップを無効にする方法は?

4

1 に答える 1