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


Счетчики производительности для ASP.NET

Обновлен: Ноябрь 2007

ASP.NET поддерживает два группы счетчиков производительности: счетчики производительности системы и счетчики производительности приложений. Счетчики производительности системы представлены в мониторе производительности Windows как объект счетчика производительности ASP.NET. Счетчики производительности приложений предоставлены как объект производительности Приложений ASP.NET.

fxk122b4.alert_note(ru-ru,VS.90).gifПримечание.

Значение, связанное с каждым счетчиком производительности, обновляется каждые 400 миллисекунд. При создании приложения для мониторинга производительности необходимо проверять, что этот период времени учитывается, и следовательно код не использует устаревшие значения счетчиков. Дополнительные сведения см. в разделе Использование компонентов наблюдения за системой.

Дополнительные сведения о счетчиках производительности системы и приложений см. в разделах Практическое руководство. Создание категорий счетчиков производительности, Управление категорией и счетчиком и Практическое руководство. Создание пользовательских счетчиков производительности.

При наблюдении за производительностью веб-приложений ASP.NET можно отслеживать счетчики производительности, перечисленные в следующей таблице.

Объект производительности

Счетчик производительности

ASP.NET

Перезапусков приложения

ASP.NET

Запросов в очереди

ASP.NET

Перезапусков рабочего процесса

Приложения ASP.NET

Общее число ошибок

Приложения ASP.NET

Запросов/сек

Процессор

% загруженности процессора

fxk122b4.alert_note(ru-ru,VS.90).gifПримечание.
Низкий процент использования процессора или невозможность максимизировать использование процессора независимо от загрузки клиента может означать конкуренцию за блокировку или ресурс в веб-приложении.

Для обнаружения проблем в производительности веб-приложений могут помочь счетчики производительности, представленные в следующей таблице.

Объект производительности

Счетчик производительности

Приложения ASP.NET

Число экземпляров конвейеров

Исключения CLR .NET

Число исключений

System

Контекстных переключений/сек

Счетчик Число исключений отображает количество созданных приложением исключений, так как исключения влияют на производительность. Однако для нормальной работы исключения необходимы некоторым частям кода. Например, метод Redirect объекта Response создает исключение ThreadAbortException, которое не может быть перехвачено. Таким образом, полезно отслеживать это значение вместе со счетчиком Общее число ошибок, чтобы посмотреть вызывает ли исключение ошибку в приложении.

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

Счетчики производительности системы ASP.NET

ASP.NET поддерживает счетчики производительности системы ASP.NET, перечисленные в следующей таблице. Эти счетчики предоставляют совокупные сведения от всех приложений ASP.NET на компьютере веб-сервера.

fxk122b4.alert_note(ru-ru,VS.90).gifПримечание.

Имеются значительные различия между счетчиками State Server Sessions в объекте производительности ASP.NET, работающими только с сервером, на котором выполняется сервер состояний, и счетчиками Sessions в объекте Приложения ASP.NET, работающими только с сеансами пользователей.

  • Перезапусков приложения
    Число перезапусков приложения за время существования веб-сервера. Значение данного счетчика увеличивается после возникновения события Application_OnEnd. Перезапуск приложения может произойти в результате изменений в файле Web.config, изменений сборок, хранящихся в каталоге Bin приложения, или, если приложение должно быть перекомпилировано из-за на многочисленных изменений веб-страницы ASP.NET. Неожиданное увеличение значения счетчика может означать повторяющиеся проблемы в работе веб-приложения. В данном случае следует как можно скорее выяснить причины.

    fxk122b4.alert_note(ru-ru,VS.90).gifПримечание.

    Значение счетчика обнуляется при каждом перезапуске узла службы (IIS).

  • Запущено приложений
    Число приложений, выполняющихся одновременно на компьютере сервера.

  • Прервано запросов
    Число запросов, не обработанных в результате ошибок подключения.

  • Запросов в очереди
    Число запросов, ожидающих обслуживания в очереди. Если это число начинает линейно возрастать с увеличением загрузки клиента, это значит, что компьютер веб-сервера достиг предельного значения одновременно обрабатываемых запросов. По умолчанию максимальное значение для этого счетчика равняется 5000. Данное значение можно изменить в файле Machine.config.

  • Отклонено запросов
    Общее число запросов, не обработанных вследствие недостатка ресурсов сервера. Значение счетчика равно числу запросов, возвративших код ошибки HTTP 503, которая означает, что сервер перегружен.

  • Время ожидания для запроса
    Время в миллисекундах, в течение которого последний запрос находился в очереди в ожидании обработки.

  • Общее число подключений к серверу состояний
    Общее число подключений к компьютеру, на котором сохраняются данные состояний сеансов вне процессов. Дополнительные сведения см. в разделе Режимы состояний сеанса.

  • Общее число подключений к серверу SQL
    Общее число подключений состояния сеанса к базе данных Microsoft SQL Server, в которой хранятся данные состояния сеанса. Дополнительные сведения см. в разделе Режимы состояний сеанса.

  • Ликвидировано сеансов сервера состояний
    Число явно завершенных сеансов пользователей. Это число сеансов, которые были прерваны определенными действиями пользователя, например, закрытие веб-обозревателя или переход на другой веб-узел. Этот счетчик доступен только на компьютере, на котором запущена служба сервера состояний (aspnet_state).

  • Активно сеансов сервера состояний
    Число активных в данный момент сеансов пользователя. Этот счетчик доступен только на компьютере, на котором запущена служба сервера состояний (aspnet_state).

  • Сеансов сервера состояний, закрытых по тайм-ауту
    Число сеансов пользователя, ставших неактивными из-за отсутствия действий со стороны пользователя. Этот счетчик доступен только на компьютере, на котором запущена служба сервера состояний (aspnet_state).

  • Общее число сеансов сервера состояний
    Число сеансов, созданных за время существования процесса. Значение данного счетчика представляет сумму значений счетчиков Активно сеансов сервера состояний, Ликвидировано сеансов сервера состояний и Сеансов сервера состояний, закрытых по тайм-ауту. Данный счетчик доступен только на компьютере, на котором запущена служба сервера состояний (aspnet_state).

  • Перезапусков рабочего процесса
    Количество перезапусков рабочего процесса на сервере. Рабочий процесс может быть перезапущен при возникновении непредвиденной ошибки или при преднамеренных действиях. Если значение данного счетчика внезапно увеличивается, то необходимо произвести выяснить причины как можно скорее.

  • Запущено рабочих процессов
    Количество запущенных на сервере рабочих процессов.

Счетчики производительности приложений ASP.NET

ASP.NET поддерживает счетчики производительности приложений, перечисленные в следующей таблице. Данные счетчики позволяют наблюдать за производительностью отдельного экземпляра приложения ASP.NET. Для данных счетчиков доступен уникальный экземпляр с именем __Total__. Данный экземпляр суммирует показания счетчиков для всех приложений на веб-сервере (аналогично глобальным счетчикам, описанным ранее в этом разделе). Экземпляр __Total__ всегда доступен. Если на сервере не выполняется ни одно приложение, то значение счетчика равно нулю.

  • Анонимных запросов
    Число запросов, использующих анонимную проверку подлинности.

  • Анонимных запросов/сек
    Число запросов, использующих анонимную проверку подлинности в секунду.

  • Всего порций данных в кэше
    Общее число порций данных в кэше. Данный счетчик учитывает использование кэша платформой ASP.NET и использование кэша приложения через кэш API.

  • Всего попаданий в кэш
    Общее число успешных обращений к кэшу. Данный счетчик учитывает использование кэша платформой ASP.NET и использование кэша приложения через кэш API.

  • Всего промахов в кэше
    Число неудачных попыток обращения к кэшу на приложение. Данный счетчик учитывает использование кэша платформой ASP.NET и использование кэша приложения через кэш API.

  • Общая результативность поиска в кэше
    Отношение числа попаданий к числу промахов в кэше. Данный счетчик учитывает использование кэша платформой ASP.NET и использование кэша приложения через кэш API.

  • Частота текучести данных в общем кэше
    Число добавлений и удалений элементов из кэша в секунду. Данный счетчик помогает определить эффективность использования кэша. Большое значение говорит об неэффективном использовании кэша.

  • Порций данных в кэше API
    Общее число порций данных в кэше приложения.

  • Попаданий в кэш API
    Общее число успешных обращений к кэшу, если доступ осуществляется только через внешние интерфейсы API кэша. Данный счетчик не отслеживает использование кэша платформой ASP.NET.

  • Промахи кэша API
    Общее число неудачных обращений к кэшу при доступе через внешние интерфейсы API кэша. Данный счетчик не отслеживает использование кэша платформой ASP.NET.

  • Результативность поиска в кэше API
    Отношение числа попаданий к числу промахов при доступе через внешние интерфейсы API кэша. Данный счетчик не отслеживает использование кэша платформой ASP.NET.

  • Частота текучести данных в кэше API
    Отношение числа добавлений и удалений из кэша за секунду к объему кэша при доступе к кэшу через внешние интерфейсы программирования (кроме использования платформой ASP.NET). Данный счетчик может служить показателем эффективности кэша. Большое значение свидетельствует о нерациональном использовании кэша.

  • Общее число компиляций
    Число компиляций, произведенных за время жизни текущего процесса веб-сервера. Компиляция возникает при динамической компиляции на сервере файлов исходного кода или файлов с расширениями ASPX, ASMX, ASCX и ASHX.

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

  • Запросов отладки
    Число запросов, возникших в режиме отладки.

  • Ошибок при обработке
    Число ошибок, возникших при разборе, за исключением ошибок компиляции и выполнения.

  • Ошибок при компиляции
    Число ошибок, возникших при динамической компиляции, за исключением ошибок разбора и ошибок во время выполнения.

  • Ошибок при выполнении
    Общее число ошибок, возникших во время выполнения запроса HTTP, за исключением ошибок разбора и компиляции.

  • Необработанных ошибок при выполнении
    Число необработанных ошибок, возникших во время обработки HTTP-запроса. Необработанной ошибкой является любое исключение среды выполнения, которое не перехватывается в пользовательском коде и обрабатывается внутренней логикой обработки ошибок ASP.NET. Исключениями из этого правила являются следующие случаи:

    • Включена отправка особых сообщений об ошибках или определена страница с сообщением об ошибке (или оба случая).

    • В пользовательском коде определено событие Page_Error и либо данная ошибка удаляется (с помощью метода ClearError), либо выполняется перенаправление.

  • Необработанных ошибок при выполнении/сек
    Число необработанных ошибок в секунду, возникших во время выполнения HTTP-запроса.

  • Общее число ошибок
    Общее число ошибок, возникших во время выполнения запросов HTTP, включая любые ошибки разбора, компиляции или времени выполнения. Значение этого счетчика является суммой значений счетчиков Ошибок при компиляции, Ошибок при обработке и Ошибок при выполнении. При правильной работе веб-сервера не должно возникать ошибок. Ошибки в веб-приложении ASP.NET искажают результаты тестирования пропускной способности, так как для обработки ошибок используются различные фрагменты кода. Перед началом тестирования производительности приложения выявите и устраните все ошибки.

  • Общее число ошибок/сек
    Число ошибок в секунду, возникших во время выполнения запросов HTTP, включая любые ошибки разбора, компиляции или времени выполнения.

  • Порций данных в выходном кэше
    Общее число порций данных в выходном кэше.

  • Попаданий в выходной кэш
    Общее число запросов, обработанных в выходном кэше.

  • Промахов выходного кэша
    Число неудачных попыток обращения к выходному кэшу на приложение.

  • Результативность поиска в выходном кэше
    Доля запросов от общего числа, обработанных в выходном кэше.

  • Частота текучести данных в кэше вывода
    Число добавлений и удалений элементов из выходного кэша за секунду. Если эта скорость высока, то кэш используется неэффективно.

  • Число экземпляров конвейеров
    Число активных экземпляров контейнера запросов для данного приложения ASP.NET. Так как в экземпляре конвейера может выполняться только один поток, эта величина соответствует максимальному числу одновременно выполняемых запросов. В большинстве случаев данный показатель должен быть небольшим при высокой загрузке, что означает эффективное использование процессора.

  • Всего байтов запросов
    Общий размер всех запросов в байтах.

  • Всего исходящих байт запросов
    Общий размер ответов, отправленных клиенту (в байтах). В данное число не входят заголовки запросов HTTP.

  • Выполняется запросов
    Число выполняемых в данный момент запросов.

  • Неудачных запросов
    Общее число не обслуженных запросов. В данное число входят все ошибки с кодом состояния большим или равным 400.

    Запросы, вызывающие код состояния 401, увеличивают значение этого счетчика и счетчика Запросов, не прошедших авторизацию. Запросы, вызывающие код состояния 404 или 414, увеличивают значение данного счетчика и счетчика Запросов отсутствующих ресурсов. Запросы, вызывающие код состояния 500, увеличивают значение данного счетчика и счетчика Запросов с истекшим временем ожидания.

  • Запросов отсутствующих ресурсов
    Число запросов, не обработанных в связи с тем, что не были найдены ресурсы (код состояния 404 или 414).

  • Запросов, не прошедших авторизацию
    Число запросов, не обработанных в связи с тем, что они не прошли авторизацию (код состояния 401).

  • Успешных запросов
    Число успешно обработанных запросов (код состояния 200).

  • Запросов с истекшим временем ожидания
    Число запросов с истекшим временем ожидания (код состояния 500).

  • Общее число запросов
    Общее число запросов с момента запуска службы.

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

  • Активных сеансов
    Число активных в данный момент сеансов. Данный счетчик поддерживается только для состояния сеансов во внутренней памяти.

  • Ликвидировано сеансов
    Число явно завершенных сеансов. Данный счетчик поддерживается только для состояния сеансов во внутренней памяти.

  • Сеансов с истекшим временем ожидания
    Число сеансов с истекшим временем ожидания. Данный счетчик поддерживается только для состояния сеансов во внутренней памяти.

  • Общее число сеансов
    Общее число сеансов. Данный счетчик поддерживается только для состояния сеансов во внутренней памяти.

  • Прерванных транзакций
    Число транзакций, отмененных для всех активных приложений ASP.NET.

  • Зафиксированных транзакций
    Число транзакций, зафиксированных для всех активных приложений ASP.NET.

  • Незавершенных транзакций
    Число транзакций, выполняющихся для всех активных приложений ASP.NET.

  • Общее число транзакций
    Общее число транзакций для всех активных приложений ASP.NET.

  • Транзакций в секунду
    Число запущенных в секунду транзакций для всех активных приложений ASP.NET.

См. также

Основные понятия

Общие сведения о производительности

Проблемы с производительностью при миграции из ASP в ASP.NET

Наблюдение за производительностью приложений ASP.NET

Другие ресурсы

Кэширование в ASP.NET