Який час затримки підключення TCP за замовчуванням у Windows? Існує ключ реєстру, щоб його налаштувати або він задається динамічно?
Який час затримки підключення TCP за замовчуванням у Windows? Існує ключ реєстру, щоб його налаштувати або він задається динамічно?
Відповіді:
У Windows значення є динамічним для встановлених з'єднань , хоча за замовчуванням для початкових з'єднань становить 72 секунди. Налаштування Реєстру визначені в цій статті:
http://technet.microsoft.com/en-us/library/cc739819(WS.10).aspx
HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Послуги: \ Tcpip \ Параметри
TcpInitialRTT : визначає початкові налаштування тайм-ауту для нових з'єднань. Це число в секундах подвоюється кожного разу, коли воно повторно передається перед тимчасовим відключенням зв'язку. За замовчуванням до 3.
TcpMaxConnectRetransmissions : визначає кількість повторних передач перед тимчасовим відключенням з'єднання. За замовчуванням до 5.
Зазвичай "тайм-аут підключення" відноситься до часу очікування створення початкового з'єднання з хостом. У багатьох системах (включена Windows 7) це значення конфігурується за допомогою окремих налаштувань від таймаутів постійного зв’язку після встановлення з'єднання. Ця відповідь стосується сценарію "початкового підключення" для Windows 7, який відрізняється від XP.
Для Windows 7 необхідні два виправлення для підтримки налаштувань часу очікування підключення. Нові параметри можна налаштувати за допомогою команди 'netsh'.
З статті виправлення 2786464:
Примітка У Windows 7 та Windows Server 2008 R2 значення максимальної ретрансляції SYP TCP (JH: MaxSynRetransmissions) встановлено на 2 і не може бути налаштовано. Через 3-секундне обмеження початкового значення тайм-ауту (JH: InitialRTO), тристоронне рукостискання TCP обмежується 21-секундним часовим інтервалом (3 секунди + 2 * 3 секунди + 4 * 3 секунди = 21 секунди ).
Перше виправлення додає параметр "MaxSynRetransmissions", який дозволяє змінити параметр повтору з значення за замовчуванням 2. Другий додає налаштування "InitialRto", яке дозволяє змінити початкове значення RTO з типового 3000мс (так, мілісекунди), але тільки на щось коротше 3000 мс; її не можна збільшувати. Залежно від вашої ситуації, вам може знадобитися лише виправлення "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 використовується для посилання на фактичний час очікування з'єднання. Його потрібно встановити окремо, але це легко зробити.
Додаткові посилання / kudos:
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
Якщо я правильно розумію ваше запитання, ви маєте на увазі:
TcpTimedWaitDelay
Цей ключ визначає час, який повинен минути, перш ніж TCP / IP може випустити закрите з'єднання та повторно використовувати його ресурси. Цей інтервал між закриттям та випуском відомий як стан TIME_WAIT або вдвічі більший за час життя сегмента (2MSL). За цей час відновлення з'єднання з клієнтом та сервером коштує менше, ніж на встановлення нового з'єднання. Зменшуючи значення цього запису, TCP / IP може швидше звільнити закриті з'єднання та забезпечити більше ресурсів для нових з'єднань. Відрегулюйте цей параметр, якщо запущена програма вимагає швидкого виходу, створення нових з'єднань або коригування через низьку пропускну здатність, спричинену декількома з'єднаннями у стані TIME_WAIT.
Точний ключ: HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Tcpip \ Параметри \ TcpTimedWaitDelay
Можливо, він не встановлений, якщо ви використовуєте Win2008 або новішу версію, але за замовчуванням це 240 десятків (це 240 секунд або 4 хвилини). Ви можете додати ключ до реєстру з іншим значенням, і він набере чинності після перезавантаження (тестується на Windows Server 2008R2 у виробничому середовищі). Це абсурдно висока цінність, враховуючи якість сучасних мереж.
У мене була програма, буквально менше місяця тому, що працює на сервері, яка вичерпала максимальну кількість підключень, які Windows може підтримувати, і регулярно вбиває всі послуги мережі на цьому сервері. 16 000+ підключень у netstat -a, коли ви навіть вдається управляти RDP на сервері. Ми встановили значення на 30 десятків (30 секунд) і вуаля, проблема була вирішена - менше 10 000 одночасних з'єднань (оскільки додаток швидко відкривалося і закривалося) і жодних проблем пропускної здатності.
TcpMaxDataRetransmissions
на 16 (за замовчуванням передбачається 5), але мій PuTTY все ще дуже швидко скидає з'єднання при коротких відключеннях, тоді як ssh на OS X і тій же мережі підтримує їх добре. superuser.com/questions/529511/…