Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
С помощью трассировки ETW поток данных через компонент API HTTP-сервера можно проверить для диагностики проблем. Например, пользователи веб-приложения могут видеть сообщения об ошибках в браузере, на котором веб-страница не может отображаться. На сервере, на котором размещено веб-приложение, ИТ-специалист также видит запись времени ожидания подключения в журнале ошибок HTTP, как показано на рисунке 1 ниже. Журнал ошибок HTTP можно найти в следующем каталоге: %windir%\System32\LogFiles\HTTPERR\.
Рис. 1. Журнал ошибок HTTP для времени ожидания
Создание отчета трассировки трассировки etw
Чтобы создать отчет трассировки ETW для компонента API HTTP-сервера, выполните приведенные ниже действия из командной строки. В этом примере трассировка выполняется на сервере, так как она размещает веб-приложение.
Приведенные ниже действия создают трассировку httptrace.etl, а затем преобразуют трассировку в CSV-файл с именем httptrace.csv. Как показано ниже, поставщик ETW для API HTTP-сервера называется Microsoft-Windows-HttpService. Параметр командной строки 0xFFF указывает, что все события ETW для этого поставщика должны быть записаны.
создание отчета трассировки трассировки etw
- Запустите трассировку трассировки ETW для компонента API HTTP-сервера: logman.exe запустить httptrace -p Microsoft-Windows-HttpService 0xFFFF -o httptrace.etl –ets
- Воспроизводите проблему, чтобы ее можно было записать в трассировке. В этом примере доступ к веб-приложению осуществляется с клиентского компьютера, что приводит к тому, что страница "" не может отображаться" сообщение, отображаемое на клиенте.
- Теперь, когда проблема была воспроизведена, остановите трассировку: logman.exe остановить httptrace –ets
- Преобразование отчета в формат CSV: tracerpt.exe httptrace.etl -of CSV -o httptrace.csv
- Просмотр отчета трассировки. Фрагмент трассировки 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
- На сервере откройте командное окно с повышенными привилегиями и выполните приведенные ниже действия, чтобы просмотреть и настроить значение времени ожидания. Снимок экрана: команда Netsh HTTP показана на рисунке 2 ниже.
- Отображение текущих значений времени ожидания: Netsh http show timeout
- Настройте значение времени ожидания Timer_ConnectionIdle. В этом примере значение изменяется на 240 секунд: Netsh http add timeouttype=idleconnectiontimeout value=240
Рис. 2. Командное окно Netsh HTTP
После настройки значения времени ожидания повторно выполните шаги диагностики ETW. Если условие ошибки исправлено, трассировка трассировки ETW больше не должна отображать время ожидания с уровнем трассировки ETW "3" для таймера простоя подключения.