web-dev-qa-db-ja.com

デフォルトはどれですかTCP Windowsの接続タイムアウト?

デフォルトはどれですかTCP Windowsの接続タイムアウト?それを構成するレジストリキーがあるか、動的に設定されますか?

Windowsでは、established接続の値は動的ですが、初期接続のデフォルトは72秒です。レジストリ設定はこの記事で定義されています:

http://technet.Microsoft.com/en-us/library/cc739819(WS.10).aspx

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services:\ Tcpip\Parameters

TcpInitialRTT:新しい接続の初期タイムアウト設定を定義します。この秒数は、接続がタイムアウトする前に再送信するたびに2倍になります。デフォルトは3です。

TcpMaxConnectRetransmissions:接続がタイムアウトするまでの再送回数を定義します。デフォルトは5です。

24
sysadmin1138

通常、「接続タイムアウト」は、ホストへの初期接続を作成するためのタイムアウトを指します。多くのシステム(Windows 7を含む)では、この値は、接続が確立された後の進行中の通信のタイムアウトとは別の設定を使用して構成されます。この回答は、XPとは異なるWindows 7の「初期接続」シナリオに対応しています。

Windows 7の場合、接続タイムアウト設定の調整をサポートするには、2つのホットフィックスが必要です。新しい設定は、 'netsh'コマンドで構成できます。

2786464の修正プログラムの記事から:

注Windows 7およびWindows Server 2008 R2では、TCP最大SYN再送信(JH:MaxSynRetransmissions))の値は2に設定されており、構成できません。最初の3秒の制限により、タイムアウト値(JH:InitialRTO)、TCPスリーウェイハンドシェイクは21秒のタイムフレーム(3秒+ 2 * 3秒+ 4​​ * 3秒= 21秒)に制限されています) 。

最初の修正プログラムは、再試行設定をデフォルト値の2から変更できる「MaxSynRetransmissions」設定を追加します。2番目の修正プログラムは、初期RTO値をデフォルトの3000ms(はい、ミリ秒)から変更できる「InitialRto」設定を追加しますが、 3000msより短い何か;増やすことはできません。状況によっては、 'MaxSynRetransmissions'修正プログラムのみが必要になる場合があります。

両方の修正プログラムをインストールして再起動し、管理者としてコマンドウィンドウを開きます。以降のnetshコマンドの呼び出しでは、再起動は必要ありません。

C:\Windows\system32>NET SESSION >nul 2>&1

C:\Windows\system32>IF %ERRORLEVEL% EQU 0 (ECHO Administrator PRIVILEGES Detected!) ELSE ( ECHO NOT AN ADMIN! )
Administrator PRIVILEGES Detected!

C:\Windows\system32>netsh interface tcp show global
Querying active state...

TCP Global Parameters
----------------------------------------------
Receive-Side Scaling State          : enabled
Chimney Offload State               : automatic
NetDMA State                        : enabled
Direct Cache Acess (DCA)            : disabled
Receive Window Auto-Tuning Level    : normal
Add-On Congestion Control Provider  : none
ECN Capability                      : disabled
RFC 1323 Timestamps                 : disabled
Initial RTO                         : 3000
Non Sack Rtt Resiliency             : disabled
Max SYN Retransmissions             : 2
** The above autotuninglevel setting is the result of Windows Scaling heuristics

overriding any local/policy configuration on at least one profile.

C:\Windows\system32>cmd /v:on /c "echo !TIME! & telnet 192.168.1.254 & echo !TIME!"
14:10:30.53
Connecting To 192.168.1.254...Could not open connection to the Host, on port 23: Connect failed
14:10:51.60


C:\Windows\system32>netsh interface tcp set global MaxSynRetransmissions=3
Ok.


C:\Windows\system32>netsh interface tcp show global
Querying active state...

TCP Global Parameters
----------------------------------------------
Receive-Side Scaling State          : enabled
Chimney Offload State               : automatic
NetDMA State                        : enabled
Direct Cache Acess (DCA)            : disabled
Receive Window Auto-Tuning Level    : normal
Add-On Congestion Control Provider  : none
ECN Capability                      : disabled
RFC 1323 Timestamps                 : disabled
Initial RTO                         : 3000
Non Sack Rtt Resiliency             : disabled
Max SYN Retransmissions             : 3
** The above autotuninglevel setting is the result of Windows Scaling heuristics

overriding any local/policy configuration on at least one profile.

C:\Windows\system32>cmd /v:on /c "echo !TIME! & telnet 192.168.1.254 & echo !TIME!"
14:27:02.33
Connecting To 192.168.1.254...Could not open connection to the Host, on port 23:
 Connect failed
14:27:47.41

C:\Windows\system32>netsh interface tcp set global MaxSynRetransmissions=2
Ok.


C:\Windows\system32>netsh interface tcp set global InitialRto=1000
Ok.


C:\Windows\system32>netsh interface tcp show global
Querying active state...

TCP Global Parameters
----------------------------------------------
Receive-Side Scaling State          : enabled
Chimney Offload State               : automatic
NetDMA State                        : enabled
Direct Cache Acess (DCA)            : disabled
Receive Window Auto-Tuning Level    : normal
Add-On Congestion Control Provider  : none
ECN Capability                      : disabled
RFC 1323 Timestamps                 : disabled
Initial RTO                         : 1000
Non Sack Rtt Resiliency             : disabled
Max SYN Retransmissions             : 2
** The above autotuninglevel setting is the result of Windows Scaling heuristics

overriding any local/policy configuration on at least one profile.


C:\Windows\system32>cmd /v:on /c "echo !TIME! & telnet 192.168.1.254 & echo !TIME!"
14:29:06.13
Connecting To 192.168.1.254...Could not open connection to the Host, on port 23:
 Connect failed
14:29:13.20

注:実際の接続タイムアウトの参照には、Windows telnetが使用されます。個別にインストールする必要がありますが、簡単です。

追加リンク/称賛:

10
Josh Hansen

TcpInitialRTTおよびTcpMaxConnectRetransmissionsは、VistaおよびWindows 2008には存在しない場合があります。このMicrosoftのドキュメントには含まれていません。 http://download.Microsoft.com/download/c/2/6/c26893a6-46c7-4b5c-b287-830216597340/TCPIP_Reg.doc

そして、これは少なくともTcpInitialRTTがなくなったことを示していますが、それがどれほど信頼できるかはわかりません。 http://pul.se/Blog-Post-TCP-IP-Stack-hardening-in-Operating-Systems-starting-with-Windows-Vista_SharePoint-kHPTTCP0WJ5,7zq00hH0wINE

2
lethargo

私があなたの質問を正しく理解しているなら、あなたは以下を参照しています:

TcpTimedWaitDelay

このキーは、TCP/IPが閉じられた接続を解放してそのリソースを再利用するまでに経過する必要がある時間を決定します。閉鎖と解放の間のこの間隔は、TIME_WAIT状態または最大セグメント存続時間(2MSL)状態の2倍として知られています。この間、クライアントとサーバーへの接続を再開することは、新しい接続を確立するよりもコストがかかりません。このエントリの値を減らすことにより、TCP/IPは閉じられた接続をより早く解放し、新しい接続により多くのリソースを提供できます。実行中のアプリケーションで迅速な解放、新しい接続の作成、またはTIME_WAIT状態の複数の接続が原因でスループットが低下したために調整が必要な場合は、このパラメーターを調整します。

正確なキーは次のとおりです。HKEY_LOCAL_MACHINE\ SYSTEM\CurrentControlSet\Tcpip\Parameters\TcpTimedWaitDelay

Win2008以降を使用している場合は設定されていない可能性がありますが、デフォルトは10進数の240(つまり240秒または4分)です。レジストリに別の値でキーを追加すると、再起動後に有効になります(実稼働環境のWindows Server 2008R2でテスト済み)。現代のネットワークの品質を考えると、これはとてつもなく高い価値です。

Windowsがサポートできる最大数の接続を使い果たし、そのサーバー上のすべてのネットワークサービスを定期的に強制終了するサーバー上で文字通り1か月未満前にアプリケーションを実行していました。サーバーへのRDPを管理する場合でも、netstat -aで16,000以上の接続。値を10進数の30(30秒)に設定して問題を解決しました。問題は解決されました-10,000未満の同時接続(アプリが急速に開いたり閉じたりするため)で、スループットの問題はありません。

1
denislin