Счетчики производительности в .NET Framework
Примечание.
Эта статья относится к .NET Framework. Он не применяется к более новым реализациям .NET, включая .NET 6 и более поздние версии.
В этой статье приведен список счетчиков производительности, которые можно найти в Windows Монитор производительности.
Счетчики исключений
Категория исключений .NET CLR включает счетчики , предоставляющие сведения об исключениях, создаваемых приложением. Эти счетчики производительности представлены в следующей таблице.
Счетчик производительности | Description |
---|---|
Число исключений | Отображение общего числа исключений, созданных с момента запуска приложения. Сюда входят как исключения .NET, так и неуправляемые исключения, преобразованные в исключения .NET. Например, исключение HRESULT, возвращенное из неуправляемого кода, преобразуется в исключение в управляемом коде. Этот счетчик включает обработанные и необработанные исключения. Повторно созданные исключения учитываются снова. |
Число исключений/сек | Отображение числа созданных исключений в секунду. Сюда входят как исключения .NET, так и неуправляемые исключения, преобразованные в исключения .NET. Например, исключение HRESULT, возвращенное из неуправляемого кода, преобразуется в исключение в управляемом коде. Этот счетчик включает обработанные и необработанные исключения. Усреднение по времени не производится; отображается разность значений двух последних выборок, деленная на длительность интервала выборки. Этот счетчик является индикатором потенциальных проблем с производительностью, если возникает большое (>100-е) количество исключений. |
Число фильтров/сек | Отображение числа фильтров исключений .NET, выполненных в секунду. Фильтр исключений применяется независимо от того, было ли исключение обработано. Усреднение по времени не производится; отображается разность значений двух последних выборок, деленная на длительность интервала выборки. |
Число окончательных блоков/сек | Отображение числа блоков finally, выполненных в секунду. Выполнение блока finally гарантировано, независимо от результатов выхода из блока try. Учитываются только блоки finally, выполненные для исключения; блоки finally в обычных ветвях кода не учитываются этим счетчиком. Усреднение по времени не производится; отображается разность значений двух последних выборок, деленная на длительность интервала выборки. |
Глубина от выдачи до захвата | Отображение числа пройденных кадров стека: от кадра, вызвавшего исключение, до кадра, обработавшего исключение (в секунду). Этот счетчик обнуляется при вводе обработчика исключения, поэтому вложенные исключения показывают глубину стека от обработчика до обработчика. Усреднение по времени не производится; отображается разность значений двух последних выборок, деленная на длительность интервала выборки. |
Счетчики взаимодействия
Категория взаимодействия .NET CLR включает счетчики, предоставляющие сведения о взаимодействии приложения с компонентами COM, службами COM+ и внешними библиотеками типов. Эти счетчики производительности представлены в следующей таблице.
Счетчик производительности | Description |
---|---|
Количество CCW | Отображение текущего числа вызываемых оболочек COM (CCW). Вызываемая оболочка COM — это прокси-объект для управляемого объекта, на который ссылается неуправляемый COM-клиент. Этот счетчик показывает число управляемых объектов, на которые ссылается неуправляемый код COM. |
# маршаллинга | Отображает общее количество аргументов и возвращаемых значений, которые были маршалированы из управляемого в неуправляемый код, и наоборот, с момента запуска приложения. Этот счетчик не увеличивается, если заглушки являются встроенными. (Заглушки отвечают за маршалирование аргументов и возвращаемых значений. Заглушки обычно встраиваются, если маршалирование накладных расходов невелико. |
Число суррогатов | Показывает текущее число заглушек, созданных средой CLR. Заглушки отвечают за маршалирование аргументов и возвращать значения из управляемого в неуправляемый код, и наоборот, во время вызова COM-взаимодействия или вызова платформы. |
Число экспортов TLB/сек | Зарезервировано для последующего использования. |
Число импортов TLB/сек | Зарезервировано для последующего использования. |
счетчики производительности JIT
Категория JIT .NET CLR включает счетчики, предоставляющие сведения о коде, который был скомпилирован JIT.. Эти счетчики производительности представлены в следующей таблице.
Счетчик производительности | Description |
---|---|
Число откомпилированных байтов IL по требованию | Отображает общее количество байтов общей промежуточной версии (CIL), скомпилированных компилятором JIT с момента запуска приложения. Этот счетчик эквивалентен счетчику Всего откомпилированных байтов IL по требованию. |
Число откомпилированных методов по требованию | Отображение общего числа методов, откомпилированных JIT-компилятором с момента запуска приложения. Этот счетчик не включает предварительно откомпилированные методы. |
% времени на компиляцию по требованию | Отображение времени, затраченного на JIT-компиляцию с момента последней фазы JIT-компиляции (в процентах). Этот счетчик обновляется в конце каждой фазы JIT-компиляции. Фаза JIT-компиляции возникает, когда компилируется метод и его зависимости. |
Число откомпилированных байтов IL по требованию/сек | Отображает количество байтов CIL, скомпилированных JIT в секунду. Усреднение по времени не производится; отображается разность значений двух последних выборок, деленная на длительность интервала выборки. |
Уровень сбоев при компиляции по требованию | Отображение пикового числа методов, которые JIT-компилятору не удалось скомпилировать с момента запуска приложения. Этот сбой может произойти, если не удается проверить CIL или возникла внутренняя ошибка в компиляторе JIT. |
Всего откомпилированных байтов IL по требованию | Отображает общее число байтов JIT, скомпилированных с момента запуска приложения. Этот счетчик эквивалентен счетчику Число откомпилированных байтов IL по требованию. |
Счетчики загрузки
Категория загрузки .NET CLR включает счетчики, предоставляющие сведения о сборках, классах и доменах приложений, загруженных. Эти счетчики производительности представлены в следующей таблице.
Счетчик производительности | Description |
---|---|
% времени на загрузку | Зарезервировано для последующего использования. |
Длительность поиска сборки | Зарезервировано для последующего использования. |
Байт в куче загрузчика | Отображение текущего размера памяти (в байтах), выделенной загрузчиком классов для всех доменов приложений. Выделенная память — это физическое пространство, зарезервированное в файле подкачки на диске. |
Текущих доменов приложений | Отображение текущего числа доменов приложений, загруженных в данном приложении. |
Текущее число сборок | Отображение текущего числа сборок, загруженных во всех доменах приложений текущего выполняемого приложения. Если сборка загружается как нейтральная к домену из нескольких доменов приложений, этот счетчик увеличивается только один раз. |
Загружено классов на текущий момент | Отображение текущего числа классов, загруженных во всех сборках. |
Частота загрузок доменов приложений | Отображение числа доменов приложений, загруженных в секунду. Усреднение по времени не производится; отображается разность значений двух последних выборок, деленная на длительность интервала выборки. |
Частота выгрузок доменов приложений | Отображение числа доменов приложений, выгруженных в секунду. Усреднение по времени не производится; отображается разность значений двух последних выборок, деленная на длительность интервала выборки. |
Частота загрузок сборок | Отображение числа сборок, загруженных во всех доменах приложений (в секунду). Если сборка загружается как нейтральная к домену из нескольких доменов приложений, этот счетчик увеличивается только один раз. Усреднение по времени не производится; отображается разность значений двух последних выборок, деленная на длительность интервала выборки. |
Частота загрузок классов | Отображение текущего числа классов, загруженных во всех сборках (в секунду). Усреднение по времени не производится; отображается разность значений двух последних выборок, деленная на длительность интервала выборки. |
Частота сбоев при загрузке | Отображение числа классов, при загрузке которых произошел сбой (в секунду). Усреднение по времени не производится; отображается разность значений двух последних выборок, деленная на длительность интервала выборки. Сбой загрузки может возникнуть по многим причинам, например из-за несоответствия требованиям безопасности или недопустимого формата. Дополнительные сведения см. в справке по службам профилирования. |
Всего сбоев при загрузке | Отображение пикового числа классов, которые не удалось загрузить с момента запуска приложения. Сбой загрузки может возникнуть по многим причинам, например из-за несоответствия требованиям безопасности или недопустимого формата. Дополнительные сведения см. в справке по службам профилирования. |
Всего доменов приложений | Отображение пикового числа доменов приложений, загруженных с момента запуска приложения. |
Всего выгружено доменов приложений | Отображение общего числа доменов приложений, выгруженных с момента запуска приложения. Если домен приложения загружается и выгружается несколько раз, значение этого счетчика увеличивается при каждой выгрузке домена. |
Общее число сборок | Отображение общего числа сборок, загруженных с момента запуска приложения. Если сборка загружается как нейтральная к домену из нескольких доменов приложений, этот счетчик увеличивается только один раз. |
Всего загружено классов | Отображение совокупного числа классов, загруженных во всех сборках с момента запуска приложения. |
Счетчики блокировок и потоков
Категория .NET CLR LocksAndThreads включает счетчики, предоставляющие сведения об управляемых блокировках и потоках, которые использует приложение. Эти счетчики производительности представлены в следующей таблице.
Счетчик производительности | Description |
---|---|
Число текущих логических потоков | Отображение числа текущих управляемых объектов потока в приложении. Этот счетчик учитывает как работающие, так и остановленные потоки. Усреднение по времени не производится; отображается только последнее значение. |
Число текущих физических потоков | Отображение числа основных потоков операционной системы, создаваемых средой CLR и принадлежащих ей, которые выступают в качестве базовых потоков для управляемых объектов потока. Значение этого счетчика не включает потоки, используемые средой выполнения для своих внутренних операций; это подмножество потоков процесса операционной системы. |
Число текущих опознанных потоков | Отображение числа потоков, которые на данный момент опознаны средой выполнения. Эти потоки связаны с соответствующим управляемым объектом потока. Среда выполнения не создает эти потоки, но они выполнялись в среде выполнения по крайней мере один раз. Отслеживаются только уникальные потоки; потоки с одинаковым идентификатором потока, повторно входящие в среду выполнения или повторно создаваемые после выхода потока, не учитываются второй раз. |
Всего опознано потоков | Отображение общего числа потоков, опознанных средой выполнения с момента запуска приложения. Эти потоки связаны с соответствующим управляемым объектом потока. Среда выполнения не создает эти потоки, но они выполнялись в среде выполнения по крайней мере один раз. Отслеживаются только уникальные потоки; потоки с одинаковым идентификатором потока, повторно входящие в среду выполнения или повторно создаваемые после выхода потока, не учитываются второй раз. |
Частота конфликтов/сек | Отображение частоты, с которой потоки в среде выполнения выполняют неудачные попытки получения управляемой блокировки. |
Текущая длина очереди | Отображение общего числа потоков, ожидающих получения управляемой блокировки в приложении. Усреднение по времени не производится; отображается последнее значение. |
Длина очереди/сек | Отображение числа потоков (в секунду), ожидающих получения управляемой блокировки в приложении. Усреднение по времени не производится; отображается разность значений двух последних выборок, деленная на длительность интервала выборки. |
Пиковая длина очереди | Отображение общего числа потоков, ожидающих получения управляемой блокировки с момента запуска приложения. |
Частота опознавания потоков/сек | Отображение числа потоков (в секунду), которые опознаны средой выполнения. Эти потоки связаны с соответствующим управляемым объектом потока. Среда выполнения не создает эти потоки, но они выполнялись в среде выполнения по крайней мере один раз. Отслеживаются только уникальные потоки; потоки с одинаковым идентификатором потока, повторно входящие в среду выполнения или повторно создаваемые после выхода потока, не учитываются второй раз. Усреднение по времени не производится; отображается разность значений двух последних выборок, деленная на длительность интервала выборки. |
Всего конфликтов | Отображение общего числа раз, когда потоки в среде выполнения неудачно пытались получить управляемую блокировку. |
Счетчики памяти
Категория памяти .NET CLR включает счетчики, предоставляющие сведения о сборщике мусора. Эти счетчики производительности представлены в следующей таблице.
Счетчик производительности | Description |
---|---|
Байт во всех кучах | Показывает сумму значений счетчиков Размер кучи поколений 1, 2 и Размер кучи для массивных объектов. Этот счетчик показывает текущий объем памяти, выделенной в байтах для куч сборки мусора. |
Число указателей GC | Отображение текущего числа используемых указателей сборки мусора. Указатели сборки мусора — это указатели на ресурсы, внешние для среды CLR и управляемой среды. |
Число сборов мусора для поколения 0 | Отображение числа раз, когда объекты поколения 0 (то есть самые младшие, последние распределенные объекты) удалялись сборщиком мусора с момента запуска приложения. Сборка мусора поколения 0 происходит, когда объем доступной памяти для поколения 0 недостаточен для удовлетворения запроса на выделение памяти. Этот счетчик увеличивается в конце сборки мусора поколения 0. Сборки мусора последующего поколения включают сборки всех предыдущих поколений. Значение этого счетчика явно увеличивается при выполнении сборки мусора для последующих поколений (поколение 1 или 2). Этот счетчик отображает последнее значение. Значение счетчика _Global_ не является точным и следует игнорировать. |
Число сборов мусора для поколения 1 | Отображение числа раз, когда объекты поколения 1 удалялись сборщиком мусора с момента запуска приложения. Этот счетчик увеличивается в конце сборки мусора поколения 1. Сборки мусора последующего поколения включают сборки всех предыдущих поколений. Значение этого счетчика явно увеличивается при выполнении сборки мусора для последующего поколения (поколение 2). Этот счетчик отображает последнее значение. Значение счетчика _Global_ не является точным и следует игнорировать. |
Число сборов мусора для поколения 2 | Отображение числа раз, когда объекты поколения 2 удалялись сборщиком мусора с момента запуска приложения. Этот счетчик увеличивается в конце сборки мусора поколения 2 (иначе называемой полной сборкой мусора). Этот счетчик отображает последнее значение. Значение счетчика _Global_ не является точным и следует игнорировать. |
Число принудительных GC | Отображение пикового числа выполнений сборки мусора из-за явного вызова GC.Collect. Рекомендуется предоставить сборщику мусора разрешение на настройку периодичности сборок. |
Число закрепленных объектов | Отображение числа закрепленных объектов, обнаруженных в ходе последней сборки мусора. Закрепленные объекты — это объекты, которые сборщик мусора не может перемещать в памяти. Этот счетчик отслеживает закрепленные объекты только в кучах, используемых для сборки мусора. Например, сборка мусора поколения 0 вызывает перечисление закрепленных объектов только в куче поколения 0. |
Используется блоков синхронизации | Показывает текущее число используемых блоков синхронизации. Блоки синхронизации — это структуры данных, выделяемые для каждого объекта для хранения сведений о синхронизации. Блоки синхронизации хранят слабые ссылки на управляемые объекты и должны просматриваться сборщиком мусора. В блоках синхронизации можно хранить не только сведения о синхронизации, но и метаданные COM-взаимодействия. Этот счетчик указывает на проблемы, связанные с интенсивным использованием примитивов синхронизации. |
Всего зафиксировано байт | Отображение объема виртуальной памяти (в байтах), в данный момент выделенной сборщиком мусора. Выделенная память — это физическая память, для которой зарезервировано пространство в файле подкачки на диске. |
Всего зарезервировано байт | Отображает размер виртуальной памяти в байтах, в данный момент зарезервированной сборщиком мусора. Зарезервированная память — это виртуальная память, зарезервированная для приложения, при том что страницы основной памяти и дисковое пространство не использовались. |
% времени в сборке мусора | Отображение времени, потраченного на выполнение сборки мусора с момента последнего цикла сборки мусора (в процентах). Этот счетчик обычно описывает работу по сбору и уплотнению памяти, выполняемую сборщиком мусора по поручению приложения. Этот счетчик обновляется только в конце каждой сборки мусора. Усреднение не производится; отображается последнее значение. |
Выделено байт/сек | Отображение числа байтов (в секунду), выделенных для кучи сборщика мусора. Этот счетчик обновляется в конце каждой сборки мусора, не при каждом выделении памяти. Усреднение по времени не производится; отображается разность значений двух последних выборок, деленная на длительность интервала выборки. |
Объектов, оставшихся после сборки мусора | Отображение числа объектов, обработанных сборкой мусора, которые не были удалены, так как они ожидают финализации. Если эти объекты содержат ссылки на другие объекты, эти объекты также сохранятся, но не учитываются данным счетчиком. Счетчик Ожидающая выполнения операции Finalize память, наследуемая из поколения 0 представляет всю память, сохранившуюся из-за финализации. Это счетчик без накопления; он обновляется в конце каждой сборки мусора, указывая число оставшихся объектов только во время этой конкретной сборки. Этот счетчик показывает дополнительные затраты приложения, которые могут возникнуть из-за финализации. |
Размер кучи поколения 0 | Отображение максимального числа байтов, которые могут быть выделены в поколении 0; текущее число байтов, выделенных в поколении 0, не указывается. Сборка мусора поколения 0 выполняется, когда объем выделенной памяти с момента последней сборки превышает это значение. Размер поколения 0 настраивается сборщиком мусора и может изменяться во время выполнения приложения. В конце сборки поколения 0 размер кучи поколения 0 составляет 0 байт. Этот счетчик показывает размер (в байтах) выделений памяти, вызывающих следующую сборку мусора поколения 0. Этот счетчик обновляется в конце сборки мусора, не при каждом выделении памяти. |
Наследуемых из поколения 0 байт/сек | Отображение числа байт (в секунду), которые были переданы из поколения 0 в поколение 1. Уровень памяти повышается, если она остается после сборки мусора. Этот счетчик является индикатором относительно долгоживущих объектов, создаваемых в секунду. Отображается разность значений двух последних выборок, деленная на длительность интервала выборки. |
Размер кучи поколения 1 | Отображение текущего числа байтов в поколении 1; этот счетчик не показывает максимальный размер поколения 1. Объекты не выделяются непосредственно в это поколение; они передаются из сборок мусора предыдущего поколения 0. Этот счетчик обновляется в конце сборки мусора, не при каждом выделении памяти. |
Наследуемых из поколения 1 байт/сек | Отображение числа байт в секунду, которые были переданы из поколения 1 в поколение 2. Этот счетчик не учитывает объекты, уровень которых повышен только потому, что они ожидают финализации. Уровень памяти повышается, если она остается после сборки мусора. Никакие объекты не переходят из поколения 2, так как это самое старшее поколение. Этот счетчик является индикатором самых долгоживущих объектов, создаваемых в секунду. Отображается разность значений двух последних выборок, деленная на длительность интервала выборки. |
Размер кучи поколения 2 | Отображение текущего числа байтов в поколении 2. Объекты не выделяются непосредственно в этом поколении; они передаются из поколения 1 в ходе предыдущих сборок мусора поколения 1. Этот счетчик обновляется в конце сборки мусора, не при каждом выделении памяти. |
Размер кучи для массивных объектов | Отображает текущий размер в байтах кучи больших объектов. Объекты, превышающие около 85 000 байт, обрабатываются как большие объекты сборщиком мусора и выделяются непосредственно в специальной куче. Они не продвигаются поколениями. Этот счетчик обновляется в конце сборки мусора, не при каждом выделении памяти. |
Идентификатор процесса | Отображает идентификатор процесса отслеживаемого процесса среды CLR. |
Ожидающая выполнения операции Finalize память, наследуемая из поколения 0 | Отображение числа байт памяти, которые были переданы из поколения 0 в поколение 1 только потому, что они ожидают финализации. Это счетчик без накопления; он отображает значение, наблюдаемое в конце последней сборки мусора. |
Память, унаследованная из поколения 0 | Отображение числа байт памяти, которые остались после сборки мусора и были переданы из поколения 0 в поколение 1. Этот счетчик не учитывает объекты, уровень которых повышен только потому, что они ожидают финализации. Это счетчик без накопления; он отображает значение, наблюдаемое в конце последней сборки мусора. |
Память, унаследованная из поколения 1 | Отображение числа байт памяти, которые остались после сборки мусора и были переданы из поколения 1 в поколение 2. Этот счетчик не учитывает объекты, уровень которых повышен только потому, что они ожидают финализации. Это счетчик без накопления; он отображает значение, наблюдаемое в конце последней сборки мусора. Этот счетчик обнуляется, если последняя сборка мусора была сборкой только поколения 0. |
Счетчики производительности сети
Категория сети .NET CLR включает счетчики, предоставляющие сведения о данных, которые приложение отправляет и получает по сети. Эти счетчики производительности представлены в следующей таблице.
Счетчик производительности | Description |
---|---|
Получено байт | Совокупное общее число байтов, полученных всеми объектами Socket в AppDomain с момента запуска процесса. Это число включает данные и любые сведения о протоколе, не заданные TCP/IP. |
Отправлено байт | Совокупное общее число байтов, отправленных всеми объектами Socket в AppDomain с момента запуска процесса. Это число включает данные и любые сведения о протоколе, не заданные TCP/IP. |
Установлено соединений | Совокупное общее число объектов Socket для сокетов потока, к которым когда-либо выполнялось подключение в AppDomain с момента запуска процесса. |
Получено датаграмм | Совокупное общее число пакетов датаграмм, полученных всеми объектами Socket в AppDomain с момента запуска процесса. |
Отправлено датаграмм | Совокупное общее число пакетов датаграмм, отправленных всеми объектами Socket в AppDomain с момента запуска процесса. |
Среднее время существования HttpWebRequests | Среднее время выполнения для всех объектов HttpWebRequest, завершившихся за последний интервал в AppDomain с момента запуска процесса. |
Среднее время очереди HttpWebRequests | Среднее время в очереди для всех объектов HttpWebRequest, покинувших очередь за последний интервал в AppDomain с момента запуска процесса. |
Создано запросов HttpWebRequest/сек | Число объектов HttpWebRequest, созданных в AppDomain (в секунду). |
Помещено запросов HttpWebRequest в очередь/сек | Число объектов HttpWebRequest, которые были добавлены в очередь в AppDomain (в секунду). |
Прервано запросов HttpWebRequest/сек | Число объектов HttpWebRequest, в которых приложение вызывало метод Abort в AppDomain (в секунду). |
Сбоев запросов HttpWebRequest/сек | Число объектов HttpWebRequest, которым назначен код состояния сбоя от сервера в AppDomain (в секунду). |
Поддерживается несколько классов счетчиков производительности сети:
- счетчики событий, измеряющие число возникновений определенного события;
- счетчики данных, измеряющие количество отправленных или полученных данных;
- счетчики длительности, измеряющие время выполнения различных процессов (число раз измеряется для объектов в каждом интервале (обычно в секундах) после их выхода из различных состояний);
- счетчики за интервал, измеряющие число объектов, осуществляющих определенный переход за интервал времени (обычно в секунду).
Счетчики производительности сети для событий включают следующие:
- Установлено соединений
- Получено датаграмм
- Отправлено датаграмм
Эти счетчики производительности обеспечивают подсчет с момента запуска процесса. Число подключений Socket включает явный вызов метода Socket приложением для установленного подключения сокета потока, а также внутренние вызовы класса Socket, выполненные другими классами (например, HttpWebRequest, FtpWebRequest, WebClient и TcpClient).
Число полученных датаграмм и отправленных датаграмм включает пакеты датаграмм, отправленные или полученные путем явных вызовов методаSocket приложением, а также внутренних вызовов класса Socket, выполненных другими классами (например, UdpClient). . Число полученных датаграмм и отправленных датаграмм также может использоваться для весьма приблизительного подсчета числа байтов, отправленных или полученных с помощью датаграмм, на основе предположительного среднего размера датаграммы.
Счетчики производительности сети для данных включают следующие:
- Получено байт
- Отправлено байт
Эти счетчики обеспечивают подсчет числа байтов с момента запуска процесса.
Предусмотрено два счетчика длительности, измеряющие время, которое потребовалось объектам HttpWebRequest для прохождения всего жизненного цикла или его части:
- Среднее время существования HttpWebRequests
- Среднее время очереди HttpWebRequests
Для счетчика среднего времени существования HttpWebRequests время существования большинства HttpWebRequest объектов всегда начинается с момента создания объекта до момента закрытия потока отклика приложением. Существует два редких сценария:
если приложение никогда не вызывает методы GetResponse или BeginGetResponse, время существования объектов HttpWebRequest не учитывается;
если объект HttpWebRequest создает исключение WebException при вызове методов GetResponse или EndGetResponse, время существования заканчивается, когда возникает исключение. Технически основной ответный поток также закрывается в этот момент (ответный поток, возвращенный пользователю, фактически является потоком памяти, содержащим копию ответного потока).
Существует четыре счетчика, которые отслеживают определенные аспекты объектов HttpWebRequest в каждом интервале. Эти счетчики производительности могут помочь разработчикам приложений, администраторам и специалистам службы поддержки лучше понять, какие именно действия выполняют объекты HttpWebRequest. Они включают следующие:
- Создано запросов HttpWebRequest/сек
- Помещено запросов HttpWebRequest в очередь/сек
- Прервано запросов HttpWebRequest/сек
- Сбоев запросов HttpWebRequest/сек
Для счетчика Прервано запросов HttpWebRequest/сек внутренние вызовы Abort также учитываются. Причиной этих внутренних вызовов обычно является время ожидания, которое приложению может потребоваться измерить.
Счетчик Сбоев запросов HttpWebRequests/сек содержит число объектов HttpWebRequest, которым назначен код состояния сбоя от сервера (в секунду). Это означает, что код состояния, полученный от HTTP-сервера в конце запроса, не был в диапазоне от 200 до 299. Коды состояния, которые обрабатываются и приводят к новому запросу (например, многие коды состояния 401 "Несанкционированный доступ"), будут завершаться ошибкой или выполняться успешно в зависимости от результата повторной попытки. Если в приложении возникает ошибка, связанная с повторной попыткой, этот счетчик увеличивается.
Доступ к счетчикам производительности сети и управление ими осуществляется с помощью PerformanceCounter и связанных классов в пространстве имен System.Diagnostics. Счетчики производительности сети также можно просматривать в консоли системного монитора Windows.
Счетчики производительности сети необходимо включить для использования в файле конфигурации. Все счетчики производительности сети включаются и отключаются с помощью одного параметра в файле конфигурации. Включить или отключить отдельные счетчики производительности сети невозможно. Дополнительные сведения см. в разделе <performanceCounter> Element (Network Settings).
Если счетчики производительности сети включены, будет выполняться создание и обновление глобальных счетчиков производительности и счетчиков на уровне домена приложения. Если они отключены, приложение не будет предоставлять данные счетчиков производительности сети.
Счетчики производительности группируются в категории. В следующем коде перечислены все категории:
PerformanceCounterCategory[] Array = PerformanceCounterCategory.GetCategories();
for (int i = 0; i < Array.Length; i++)
{
Console.Out.WriteLine("{0}. Name={1} Help={2}", i, Array[i].CategoryName, Array[i].CategoryHelp);
}
Счетчики производительности сети объединены в две категории:
"Организация сети CLR .NET" — исходные счетчики производительности, представленные в .NET Framework 2 и поддерживаемые в .NET Framework 2 и более поздних версий;
"Организация сети CLR .NET 4.0.0.0" — все вышеперечисленные счетчики сокетов, а также новые счетчики производительности, поддерживаемые в .NET Framework 4 и более поздних версий. Эти новые счетчики предоставляют сведения о производительности для объектов HttpWebRequest.
Дополнительные сведения о доступе к счетчикам производительности и управлении ими в приложении см. в разделе Счетчики производительности.
Счетчики безопасности
Категория безопасности .NET CLR включает счетчики, предоставляющие сведения о проверках безопасности, которые выполняет среда CLR для приложения. Эти счетчики производительности представлены в следующей таблице.
Счетчик производительности | Description |
---|---|
Число проверок во время компоновки | Отображение общего числа проверок безопасности доступа кода во время компоновки с момента запуска приложения. Проверки безопасности доступа кода во время компоновки выполняются, если вызывающему объекту требуется конкретное разрешение во время JIT-компиляции. Проверка во время компоновки выполняется один раз для каждого вызывающего объекта. Этот счетчик не указывает на серьезные проблемы производительности; он просто является индикатором активности системы безопасности. |
% времени на проверки при выполнении | Отображение времени (в процентах), затраченного на выполнение проверок безопасности доступа кода во время выполнения с момента последней выборки. Этот счетчик обновляется в конце проверки безопасности .NET Framework. Усреднение не производится; счетчик представляет последнее значение. |
% проверки подлинности по временным сигналам | Зарезервировано для последующего использования. |
Глубина прохода стека | Отображение глубины стека при последней проверке безопасности доступа кода во время выполнения. Проверки безопасности доступа кода во время выполнения выполняются путем прохода по стеку. Усреднение по времени не производится; отображается только последнее значение. |
Всего проверок при выполнении | Отображение общего числа проверок безопасности доступа кода во время выполнения с момента запуска приложения. Проверки безопасности доступа кода во время выполнения выполняются, если вызывающему объекту требуется конкретное разрешение. Проверка во время выполнения выполняется при каждом вызове вызывающим объектом и проверяет стек текущего потока вызывающего объекта. При использовании со счетчиком Глубина прохода стека этот счетчик показывает снижение производительности в результате проверок безопасности. |