Поделиться через


Сценарий 1. Пример времени ожидания HTTP с помощью трассировки ETW и команд Netsh

С помощью трассировки ETW поток данных через компонент API HTTP-сервера можно проверить для диагностики проблем. Например, пользователи веб-приложения могут видеть сообщения об ошибках в браузере, на котором веб-страница не может отображаться. На сервере, на котором размещено веб-приложение, ИТ-специалист также видит запись времени ожидания подключения в журнале ошибок HTTP, как показано на рисунке 1 ниже. Журнал ошибок HTTP можно найти в следующем каталоге: %windir%\System32\LogFiles\HTTPERR\.

снимок экрана, на котором показано окно команды netsh H T T P, отображающее журнал ошибок H T P для истечения времени ожидания.

Рис. 1. Журнал ошибок HTTP для времени ожидания

Создание отчета трассировки трассировки etw

Чтобы создать отчет трассировки ETW для компонента API HTTP-сервера, выполните приведенные ниже действия из командной строки. В этом примере трассировка выполняется на сервере, так как она размещает веб-приложение.

Приведенные ниже действия создают трассировку httptrace.etl, а затем преобразуют трассировку в CSV-файл с именем httptrace.csv. Как показано ниже, поставщик ETW для API HTTP-сервера называется Microsoft-Windows-HttpService. Параметр командной строки 0xFFF указывает, что все события ETW для этого поставщика должны быть записаны.

создание отчета трассировки трассировки etw

  1. Запустите трассировку трассировки ETW для компонента API HTTP-сервера: logman.exe запустить httptrace -p Microsoft-Windows-HttpService 0xFFFF -o httptrace.etl –ets
  2. Воспроизводите проблему, чтобы ее можно было записать в трассировке. В этом примере доступ к веб-приложению осуществляется с клиентского компьютера, что приводит к тому, что страница "" не может отображаться" сообщение, отображаемое на клиенте.
  3. Теперь, когда проблема была воспроизведена, остановите трассировку: logman.exe остановить httptrace –ets
  4. Преобразование отчета в формат CSV: tracerpt.exe httptrace.etl -of CSV -o httptrace.csv
  5. Просмотр отчета трассировки. Фрагмент трассировки CSV показан ниже в таблице 1.

Просмотр трассировки и диагностики

Полученный CSV-файл для трассировок можно просмотреть в Excel или любом инструменте, поддерживающем формат CSV. В таблице 1 ниже показаны фрагменты из примера файла трассировки (httptrace.csv). В отчете трассировки столбец "Уровень" отображает запись со значением "3", которое соответствует предупреждению в ETW. Компонент API HTTP-сервера следует уровням ETW, определенным в параметрах параметрах ключевого слова поставщика событий системы ETW. Уровни ETW включают:

Уровень Значение
1 Критический
2 Ошибка
3 Предупреждение
4 Infomational
5 Многословный

 

При этом предупреждении тип события (столбец Type) сообщает "ConnTimedOut". В последующих столбцах события ConnTimeOut определенный таймер, истекший срок действия, сообщается как "Timer_ConnectionIdle". Обратите внимание, что столбец с записью "Timer_ConnectionIdle" не включен в таблицу для краткости и чтобы избежать исключения неконтигевых столбцов.

Имя события Тип Идентификатор события Версия Канал Уровень
EventTrace Заголовок 0 2 0 0
Microsoft-Windows-HttpService ChgUrlGrpProp 28 0 16 4
Microsoft-Windows-HttpService AddUrl 31 0 16 4
Microsoft-Windows-HttpService ChgReqQueueProp 30 0 16 4
Microsoft-Windows-HttpService ChgUrlGrpProp 28 0 16 4
Microsoft-Windows-HttpService ChgSrvSesProp 29 0 16 4
Microsoft-Windows-HttpService ChgSrvSesProp 29 0 16 4
Microsoft-Windows-HttpService ConnConnect 21 0 16 4
Microsoft-Windows-HttpService ConnIdAssgn 22 0 16 4
Microsoft-Windows-HttpService RecvReq 1 0 16 4
Microsoft-Windows-HttpService Разбирать 2 0 16 4
Microsoft-Windows-HttpService LogFileWrite 51 0 16 4
Microsoft-Windows-HttpService ConnCleanup 24 0 16 4
Microsoft-Windows-HttpService ConnTimedOut 53 0 16 3

 

Таблица 1. Извлечение из примера отчета трассировки для проблемы таймера

В этом примере срок действия (событие ConnTimeOut) таймера заголовка (Timer_ConnectionIdle) является причиной того, что пользователи видят сообщение "страница не может отображаться" в своих веб-клиентах. Потенциальной причиной ожидания может быть то, что веб-клиенты отправляются медленно из-за медленных подключений. Чтобы устранить эту проблему, значение времени ожидания можно настроить с помощью команд Netsh.

Настройка времени ожидания через Netsh и проверка решения

Команды Netsh для HTTP, перечисленные ниже, позволяют ИТ-специалисту просматривать и настраивать значения параметров на компоненте API HTTP-сервера. Изменения с помощью команд Netsh HTTP влияют на все серверные приложения, размещенные компонентом API HTTP-сервера для этого компьютера. Эти изменения сохраняются во время перезапуска компонента и перезагрузки компьютера. Команды Netsh HTTP доступны в Windows Vista и Windows Server 2008 и заменяют средство HttpCfg.exe пакета ресурсов Windows Server 2003 при запуске в Windows Vista и Windows Server 2008. В этом сценарии мы изменим значение времени ожидания, а затем проверяем решение. Таймеры существуют в компоненте API HTTP-сервера для обеспечения доступности и защиты от чрезмерного использования неправильно настроенным или вредоносным пользователем. При настройке таймеров из значений по умолчанию следует тщательно оцениваться по потенциальной атаке DoS.

В этом примере веб-клиенты находятся за медленным сетевым подключением, что приводит к Timer_ConnectionIdle событию ETW. После рассмотрения причины времени ожидания и балансировки с воздействием на нагрузку сервера принято решение увеличить значения времени ожидания до 240 секунд. Вы можете просмотреть и настроить таймер с помощью следующей процедуры.

Настройка таймера простоя подключения (Timer_ConnectionIdle) с помощью Netsh

  1. На сервере откройте командное окно с повышенными привилегиями и выполните приведенные ниже действия, чтобы просмотреть и настроить значение времени ожидания. Снимок экрана: команда Netsh HTTP показана на рисунке 2 ниже.
  2. Отображение текущих значений времени ожидания: Netsh http show timeout
  3. Настройте значение времени ожидания Timer_ConnectionIdle. В этом примере значение изменяется на 240 секунд: Netsh http add timeouttype=idleconnectiontimeout value=240

командное окно netsh http

Рис. 2. Командное окно Netsh HTTP

После настройки значения времени ожидания повторно выполните шаги диагностики ETW. Если условие ошибки исправлено, трассировка трассировки ETW больше не должна отображать время ожидания с уровнем трассировки ETW "3" для таймера простоя подключения.