Windows TIME_WAIT調整方法



ファイル記述子が解放される方法とタイミング
ファイル記述子は、ファイルが閉じられるかプロセスが終了した時点で不要になります。close() システム呼び出しを実行して失敗コードが返されなかった場合、関連付けられていたファイル記述子は解放され、ファイル記述子を割り当てる次の open() 呼び出しに控えます。開いているファイルの記述に関連するすべてのファイル記述子が閉じられた場合、開いているファイルの記述は消去されます。

ファイル記述子などの Java 以外のリソースを解放するのに、ガベージ コレクションやオブジェクトの close 処理を信頼することは推奨しません。close() 呼び出しを使用し、エラーが起こった場合はその出力を確認してください。


閉じられたソケットは TIME_WAIT の状態になり、このことによって接続ですべてのデータが転送されたことが示されます。データ転送は、最終確認応答 (ACK) によって終了します。この TIME_WAIT の状態が続くと、ソケットに割り当てられているファイル記述子の解放が遅れます。この TIME_WAIT の継続時間は、Unix システムの場合 tcp_time_wait _interval というカーネル パラメータで定義されています。Windows NT、Windows 2000、または Windows XP の場合、この時間はレジストリの HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters というシステム キーにある TcpTimedWaitDelay パラメータで定義されています。


「ソケットの最大数」、「TIME_WAITの時間」はそれぞれ以下のレジストリを変更して設定します。項目がない場合は追加します。

ソケットの最大数:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\MaxUserPort (DWORD)

TIME_WAITの時間:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\TcpTimedWaitDelay (DWORD)

最終更新:2006年12月12日 14:53