Снижение производительности сети при копировании файлов в контроллер домена под управлением Windows 2000 или Windows Server 2003

Переводы статьи Переводы статьи
Код статьи: 321098 - Vizualiza?i produsele pentru care se aplic? acest articol.
Внимание! Статья содержит сведения о внесении изменений в системный реестр. Перед внесением изменений рекомендуется создать резервную копию системного реестра и изучить процедуру его восстановления. Дополнительные сведения о создании резервной копии, восстановлении и изменении реестра см. в следующей статье базы знаний Майкрософт:
256986 Описание реестра Microsoft Windows
Развернуть все | Свернуть все

Проблема

При копировании файлов с клиентского компьютера под управлением Microsoft Windows 2000 на клиентский компьютер под управлением Microsoft Windows XP или с клиентского компьютера под управлением Microsoft Windows Server 2003 в сетевую папку контроллера домена под управлением Windows 2000 или Windows Server 2003 производительность сети ниже, чем если бы выполнялось копирование этих же файлов на рядовой сервер под управлением Windows 2000 или Windows Server 2003. Подобная проблема может возникнуть при копировании множества небольших файлов. Однако при копировании нескольких больших файлов производительность не снижается. Эта проблема возникает, если копирование файлов выполняется с помощью проводника Windows или если окно проводника открыто и подключено к серверу назначения. Однако, если для копирования файлов используется программа Xcopy.exe и все окна проводника Windows закрыты, подобная проблема не возникает.

Причина

Снижение производительности сети происходит из-за того, что операции записи файлов по протоколу SMB (Server Message Block) на контроллер домена под управлением Windows 2000 или Windows Server 2003 выполняются с задержкой (около 200 миллисекунд).

При просмотре трассировки данной ошибки можно заметить, что задержка возникает после того, как клиент направляет серверу команду SMB Notify Change с записью FID, совпадающей с записью FID целевой папки. Проводник Windows помещает на сетевом ресурсе запрос на уведомление об изменении, которое должно быть направлено в случае возникновения изменений в папке, появляющейся в правом окне проводника Windows. Если контроллер домена получает такой запрос, он не отвечает на него немедленно, а отправляет пакеты с задержкой (около 200 миллисекунд). На этом этапе отправляется простой пакет подтверждения TCP (TCP ACK), после чего возобновляется обычное выполнение файловой операции.

Такое поведение возникает в результате взаимодействия двух основных сетевых компонентов Windows 2000, подтверждений TCP c опозданием и назначений приоритетов потоков в контроллерах домена. Назначение приоритетов потокам позволяет контроллеру домена правильно расставить приоритеты для служб каталогов и операций управления учетными записями, прежде чем будут выполнены какие-либо действия по протоколу SMB, например ответы на запросы уведомления об изменении.

Решение

Предупреждение. Неправильное изменение параметров системного реестра с помощью редактора реестра или любым иным путем может привести к серьезным неполадкам и к необходимости переустановки операционной системы. Корпорация Майкрософт не гарантирует устранения этих неполадок. Ответственность за изменение реестра несет пользователь.
Рассматривая данную проблему, необходимо учитывать, что она возникает в тех особых случаях, когда для копирования большого количества файлов в контроллер домена под управлением Windows 2000 используется проводник Windows. Если изменить значение таймера подтверждений TCP с опозданием, то можно предотвратить возникновение некоторых проблем. Однако изменение основного значения TCP/IP может привести к получению неожиданных результатов в последующей работе. Поэтому корпорация Майкрософт рекомендует рассмотреть иные альтернативные способы, прежде чем изменять значение таймера. Подобными способами могут быть перемещение общих папок на рядовой сервер или использование других средств (таких как Xcopy или Robocopy, входящих в состав Windows 2000 Resource Kit) для копирования большого количества файлов на контроллер домена.

Чтобы настроить таймер подтверждений TCP с опозданием, на контроллере домена можно изменить параметр реестра TcpDelAckTicks. Если установить для таймера подтверждений TCP с опозданием более низкое значение, сервер будет чаще подтверждать получение пакетов.

Обратите внимание, что в сетях с большими задержками (сильно загруженных сегментах) это приводит к увеличению количества подтверждений от контроллера домена, создавая дополнительную нагрузку на сеть. Для того чтобы изменение значение таймера подтверждений TCP с опозданием не привело к дополнительным перегрузкам, необходимо его тщательно протестировать.

Если сеть сможет обработать дополнительные пакеты подтверждений, установите следующее исправление, созданное до пакета обновлений 3 (SP3), для Windows 2000 с пакетом обновлений 2 (SP2), чтобы изменить значение таймера подтверждений TCP с опозданием.

311833 Параметр реестра «TcpDelAckTicks» не влияет на таймауты ACK (эта ссылка может указывать на содержимое полностью или частично на английском языке)
После установки данного исправления воспользуйтесь следующей процедурой, чтобы добавить параметр реестра, устанавливающий пользовательский параметр таймера подтверждений ТСР с опозданием.
  1. Запустите редактор реестра (Regedit32.exe).
  2. Найдите следующий раздел реестра, где подраздел Adapter GUID является глобальным уникальным идентификатором (GUID) для сетевого адаптера, подключаемого к клиентским компьютерам
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\Adapter GUID
    .
  3. В меню Правка выберите пункт Добавить значение и добавьте следующий параметр реестра.
    Параметр: TcpDelAckTicks
    Тип данных: REG_DWORD
    Значение: Настроить данное значение можно в диапазоне от 0 до 6. Значение по умолчанию – 2 (200 миллисекунд).
  4. Закройте редактор реестра.
  5. Перезапустите Windows, чтобы изменения вступили в силу.
Этот параметр реестра определяет количество интервалов продолжительностью 100 миллисекунд, которое должно использоваться таймером для каждого интерфейса. По умолчанию значение таймера подтверждений TCP с опозданием – 200 миллисекунд. Чтобы полностью отключить таймер подтверждений с опозданием, присвойте параметру TcpDelAckTicks значение 0. После этого компьютер будет немедленно направлять подтверждение в ответ на каждый полученный пакет.

Примечание. Значения адаптера перечислены в подразделах каждого адаптера. Убедитесь в том, что параметр TcpDelAckTicks был добавлен к следующему разделу реестра:
HKLM\System\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\Адаптер GUID
Не добавляйте данный параметр к следующему разделу реестра:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters

Статус

Данное поведение является подтвержденной ошибкой продуктов Майкрософт, перечисленных в разделе «Информация в данной статье относится к следующим продуктам».

Дополнительная информация

В трассировках сети можно увидеть, что клиент отправляет пакет «SMB: C NT transact – Notify Change». Через 200 миллисекунд контроллер домена под управлением Windows 2000 отправляет клиенту пакет подтверждения. После получения пакета подтверждения клиент приступает к выполнению следующей SMB-операции и копирует следующий файл.

Примечание. Для просмотра задержек при помощи сетевого монитора лучше использовать следующий фильтр:
SMB:Command == 0xA0 ( NT transact )
Используйте его в комбинации со следующими параметрами отображения:
Время: (x) секунд после предыдущего фрейма
По следующему атрибуту фрейма SMB можно определить соответствующие запросы и ответы.
SMB: Multiplex ID (MID)
Функция подтверждений с опозданием создана в соответствии с документом Request for Comments (RFC) 1122. Протокол TCP использует подтверждения с опозданием, чтобы снизить количество пакетов, посылаемых по сети. В стеке Microsoft TCP/IP применяется общий подход для обеспечения выполнения отправки подтверждений с опозданием. Во время получения данных при подключении по протоколу TCP стек возвращает подтверждение только при выполнении одного из следующих условий.
  • Условие 1. Подтверждение для предыдущего полученного сегмента не было отправлено.
  • Условие 2. Сегмент получен, но в течение последующих 200 миллисекунд (значение по умолчанию) во время этого подключения не был доставлен следующий сегмент.
Как правило, подтверждение направляется для каждого последующего сегмента TCP, полученного при подключении, если не истекает время таймера подтверждений TCP с опозданием (200 миллисекунд). Настроить таймер подтверждений TCP с опозданием можно с помощью процедуры, описанной в разделе «Решение» данной статьи, путем добавления параметра TcpDelAckTicks (это новый параметр в Windows 2000).

Примечание. Помните о том, что изменение параметра TcpDelAckTicks может привести к возникновению неожиданных последствий в будущей работе. Поэтому корпорация Майкрософт рекомендует рассмотреть иные альтернативные способы, прежде чем изменять значение таймера.

Задержка происходит, если предыдущий пакет был подтвержден и контроллер домена поместил в очередь ответ на запрос уведомления об изменении на период времени, иногда превышающий 200 миллисекунд. Так как по умолчанию значение таймера подтверждений с опозданием равно 200 миллисекундам, протокол ТСР подтверждает пакет через 200 миллисекунд после получения от клиента запроса на уведомление об изменении. Поскольку клиент, прежде чем приступить к следующей SMB-операции, ожидает ответ сервера, в это время происходит задержка, так как таймер подтверждений TCP с опозданием ведет отсчет времени до истечения заданного значения. При выполнении трассировки сети можно заметить, что не каждый ответ на клиентский запрос уведомления об изменении отправляется с задержкой.

Уведомлению об изменении, не претерпевшему задержки, непосредственно предшествует другой неподтвержденный пакет. Поэтому на контроллере домена не происходит задержки подтверждения, так как выполняется первое условие, описанное в начале данного раздела. Если запросы на уведомление об изменении обрабатывались с задержкой, то им предшествовали подтвержденные пакеты. Поэтому контроллер домена не отвечает до тех пор, пока не истечет значение таймера подтверждений TCP с опозданием (по умолчанию 200 миллисекунд), поскольку выполняется второе условие, описанное в начале данного раздела.

Так как изменить назначение приоритетов потоков в контроллере домена невозможно, необходимо уменьшить значение таймера подтверждений TCP с опозданием, чтобы предотвратить возникновение проблем, описанных в разделе «Проблема» данной статьи. После этого сервер чаще подтверждает получение пакетов.

Дополнительные сведения о параметре реестра TcpDelAckTicks см. в следующей официальной публикации на веб-узле корпорации Майкрософт:
Microsoft Windows 2000 TCP/IP Implementation Details (Подробные сведения о реализации TCP/IP в Microsoft Windows 2000)
Дополнительные сведения о данной проблеме см. в следующей статье базы знаний Майкрософт:
270926 Решение проблем, возникающих при копировании файлов по сети в Windows 2000 (эта ссылка может указывать на содержимое полностью или частично на английском языке)
В реестре клиентского компьютера под управлением Windows XP или Windows Server 2003 предусмотрен новый параметр TcpAckFrequency для управления TCP ACK до истечения срока подтверждения. Дополнительные сведения см. в следующей статье базы знаний Майкрософт:
328890 Новый параметр реестра для управления поведением подтверждения TCP (ACK) в Windows XP и Windows Server 2003 (эта ссылка может указывать на содержимое полностью или частично на английском языке)
Дополнительные сведения см. в следующей статье базы знаний Майкрософт:
321169 Низкая скорость копирования файлов по протоколу SMB с компьютера под управлением Windows XP на контроллер домена под управлением Windows 2000

Свойства

Код статьи: 321098 - Последний отзыв: 13 февраля 2006 г. - Revision: 4.1
Информация в данной статье относится к следующим продуктам.
  • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
  • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
  • Microsoft Windows 2000 Service Pack 3
  • Microsoft Windows 2000 Service Pack 2
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Advanced Server
Ключевые слова: 
kbprb KB321098

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com