ネットワークの接続が20秒でタイムアウトする話
2010年 02月 16日
これはWindowsのTCP/IPの設定のせいで、OSレベルで制御を行っているので、アプリケーションで容易に制御できるものではない。
なおこのタイムアウト秒数だが、正確には21秒である。少なくともWindowsXPではデフォルトでTCP/IP接続を3回まで試みる。1回目は接続の応答があるまで3秒待ち、2回目は6秒待ち、3回目は12秒待つ。設定を変えて3回以上のリトライを行う場合、応答待ち時間は倍々に伸びていく。
Windows XP での TCP/IP と NBT の構成パラメータ
リトライ回数は以下のレジストリキーを設定することで、変更可能である。
キー:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
値の名前:TcpMaxConnectRetransmissions
デフォルト値:2 (DWORD値)
デフォルトでは上記キーの中にこのような値の名前は存在しない。新規作成で値を作る必要がある。
設定する値はリトライ回数なので、接続を試みる回数はこの回数プラス最初の一回となる。
応答待ち時間が倍々になることを考えると、この値の設定値とタイムアウト時間の関係は以下の通り。
0 3秒
1 9秒
2 21秒
3 45秒
4 93秒
5 189秒
6 381秒
まあ、OSレベルで設定を変える場面など、ビジネスシーンでは早々あるものではないだろう。