Відключаємо Recieve Window Auto-Tuning в Windows 7 / Server 2008.
Кілька років тому, працюючи в IT відділі однієї компанії, зіткнувся я з однією проблемою. Полягала вона в неможливості копіювання по мережі файлів великого розміру. При спробі скопіювати \ перенести файл розміром більше 100 МБ процес намертво вставав, іноді вішаючи всю систему.Причому, що найнеприємніше, проблема виявлялася періодично на різних комп'ютерах і локалізувати її не вдавалося.
В той раз вирішити проблему так і не вдалося. Через деякий час вона пішла сама, так само несподівано, як і з'явилася, і про неї благополучно забули. І ось, після деякої кількості років (і зміни кількох місць роботи) я знову побачив знайомі симптоми.Але цього разу все ж вдалося розкопати причину такої поведінки.
Справа в тому, що в новій версії набору протоколів TCP/IP для Windows 7 \ Server 2008 була реалізована функція TCP Receive Window Auto-Tuning - автоматична настройка вікна прийому TCP. Теоретично ця функція призначена для оптимізації пропускної здатності і поліпшення роботи мережі, а практично є причиною безлічі проблем.
Теорія
Вікно прийому TCP використовується для обмеження потоку даних і для забезпечення можливості контролю потоку на приймаючій стороні. Вікно TCP є обсяг даних, який одержувач дозволяє відправляти за один прийом. Тобто, чим більше вікно, тим краще робота в мережах з високою пропускною здатністю.
Для TCP/IP в Windows XP \ Server 2003 максимальний розмір вікна прийому фіксований і по умолченію становить 64 Кб. У Windows 7 \ Server 2008 оптимальний розмір вікна прийому визначається динамічно. Для цього вимірюється пропускна здатність каналу і швидкість вилучення додатком даних з вікна прийому, після чого розмір вікна адаптується відповідно до цих параметрів.Автотюнинг використовує масштабування вікна TCP, завдяки чому максимальний розмір вікна прийому становить 16 МБ.
В ідеалі при включенні автотюнінгу передача даних по мережі повинна стати більш ефективною. Однак не все так просто. Наприклад, програма не встигає витягувати дані, поточне вікно прийому заповнюється і приймає вузол починає зменшувати його розмір.При заповненні максимального вікна прийому розмір поточного вікна зменшується до 0 байт, після чого передача даних припиниться.
Практика
Як я вже говорив, проблему з автотюнінгом дуже складно локалізувати. Тому, при наявності невизначених проблем з мережевими підключеннями в першу чергу дивимося настройки TCP.Зробити це можна з командного рядка (з підвищеними привілеями) командою:
netsh interface tcp show global
Тут нас цікавить параметр "Рівень автонастройки вікна отримання" (англ. Receive Window Auto-Tuning Level). Він може приймати значення:
• disabled - автотюнінг вимкнений, використовується фіксоване значення розміру приймального вікна TCP - 64KB;
• higlyrestricted - дозволяє розміром приймального вікна виходити за межі значення за замовчуванням, дуже обмежено перевищуючи його ;
• restricted - допускає більш істотне зростання розміру вікна щодо значення за замовчуванням;
• normal - за замовчуванням.Дозволяє змінювати розмір вікна в залежності від різних умов роботи;
• experimental - дозволяє збільшувати розмір вікна до дуже великих значень. Слід застосовувати дуже обережно.
Можна спробувати підібрати потрібний рівень, наприклад спробувати higlyrestricted, а якщо не допомагає, то відключити:
netsh interface tcp set global autotuninglevel = disabled
Після зміни настройки комп'ютер слід перезавантажити.
Проблема з автотюнінгом присутній в операційних системах Windows Vista, Windows 7, Windows Server 2008 і 2008 R2. За Windows 8 і Server 2012 поки що даних немає, хоча автотюнінг в них є і використовується. Можливо спливе пізніше