- Счетчики производительности WCF WCF Performance Counters
- Включение счетчиков производительности Enabling Performance Counters
- Просмотр данных о производительности Viewing Performance Data
- Увеличение объема памяти для счетчиков производительности Increasing Memory Size for Performance Counters
- Типы счетчиков производительности Types of Performance Counters
- Счетчики производительности службы Service performance counters
- Счетчики производительности конечных точек Endpoint performance counters
- Счетчики производительности операций Operation performance counters
- Программирование счетчиков производительности WCF Programming the WCF Performance Counters
Счетчики производительности WCF WCF Performance Counters
Windows Communication Foundation (WCF) включает большой набор счетчиков производительности, помогающих оценить производительность приложения. Windows Communication Foundation (WCF) includes a large set of performance counters to help you gauge your application’s performance.
Включение счетчиков производительности Enabling Performance Counters
Вы можете включить счетчики производительности для службы WCF с помощью файла конфигурации app.config службы WCF следующим образом: You can enable performance counters for a WCF service through the app.config configuration file of the WCF service as follows:
Атрибут performanceCounters можно настроить так, чтобы включать определенный тип счетчиков производительности. The performanceCounters attribute can be set to enable a specific type of performance counters. Допустимы следующие значения: Valid values are
All. Включены счетчики всех категорий (ServiceModelService, ServiceModelEndpoint и ServiceModelOperation). All: All category counters (ServiceModelService, ServiceModelEndpoint and ServiceModelOperation) are enabled.
ServiceOnly. Включены только счетчики категории ServiceModelService. ServiceOnly: Only ServiceModelService category counters are enabled. Это значение по умолчанию. This is the default value.
Off. Счетчики производительности ServiceModel* отключены. Off: ServiceModel* performance counters are disabled.
Если вы хотите включить счетчики производительности для всех приложений WCF, можно поместить параметры конфигурации в файл Machine.config. If you want to enable performance counters for all WCF applications, you can place the configuration settings in the Machine.config file. Дополнительные сведения о настройке достаточного объема памяти для счетчиков производительности на компьютере см. в разделе увеличение объема памяти для счетчиков производительности . Please see the Increasing Memory Size for Performance Counters section below for more information on configuring sufficient memory for performance counters on your machine.
При использовании точек расширения WCF, таких как пользовательские вызывающие операции, следует также создавать собственные счетчики производительности. If you use WCF extensibility points such as custom operation invokers, you should also emit your own performance counters. Это связано с тем, что при реализации точки расширения WCF может больше не создавать стандартные данные счетчиков производительности в пути по умолчанию. This is because if you implement an extensibility point, WCF may no longer emit the standard performance counter data in the default path. Если поддержка трассировки вручную путем создания счетчика производительности не реализована, можно не увидеть ожидаемые данные счетчика производительности. If you do not implement manual performance counter support, you may not see the performance counter data you expect.
Также счетчики производительности можно включить в коде следующим образом. You can also enable performance counters in your code as follows,
Просмотр данных о производительности Viewing Performance Data
Чтобы просмотреть данные, полученные от счетчиков производительности, можно использовать системный монитор (Perfmon.exe), поставляемый вместе с Windows. To view data captured by the performance counters, you can use the Performance Monitor (Perfmon.exe) that comes with Windows. Чтобы запустить это средство, нажмите кнопку Пуск и выберите пункт выполнить и введите perfmon.exe в диалоговом окне. You can launch this tool by going to Start, and click Run and type perfmon.exe in the dialog box.
Экземпляры счетчиков производительности могут быть выпущены до того, как диспетчер конечной точки обработает последние сообщения. Performance counter instances may be released before the last messages have been processed by the endpoint dispatcher. Это может привести к тому, что данные производительности для некоторых сообщений не будут получены. This can result in performance data not being captured for a few messages.
Увеличение объема памяти для счетчиков производительности Increasing Memory Size for Performance Counters
WCF использует отдельную общую память для категорий счетчиков производительности. WCF uses separate shared memory for its performance counter categories.
По умолчанию объем отдельной общей памяти составляет четвертую часть от объема глобальной памяти счетчиков производительности. By default, separate shared memory is set to a quarter the size of global performance counter memory. По умолчанию объем глобальной памяти счетчиков производительности составляет 524 288 байт. The default global performance counter memory is 524,288 bytes. Таким образом, три категории счетчиков производительности WCF по умолчанию имеют размер около 128 КБ. Therefore, the three WCF performance counter categories have a default size of approximately 128KB each. В зависимости от характеристик среды выполнения приложений WCF на компьютере память счетчика производительности может быть исчерпана. Depending upon the runtime characteristics of the WCF applications on a machine, performance counter memory may be exhausted. В этом случае WCF записывает ошибку в журнал событий приложений. When this happens, WCF writes an error to the application event log. В содержимом ошибки указывается, что счетчик производительности не был загружен, и запись содержит исключение «System.InvalidOperationException: не хватает памяти для просмотра файла пользовательских счетчиков». The content of the error states that a performance counter was not loaded, and the entry contains the exception «System.InvalidOperationException: Custom counters file view is out of memory.» Если включена трассировка на уровне ошибок, этот сбой также трассируется. If tracing is enabled at the error level, this failure is also traced. Если память счетчика производительности исчерпана, продолжение выполнения приложений WCF с включенными счетчиками производительности может привести к снижению производительности. If performance counter memory is exhausted, continuing to run your WCF applications with performance counters enabled could result in performance degradation. Если вы обладаете правами администратора данного компьютера, настройте его так, чтобы выделить достаточно памяти для поддержки максимального количества счетчиков производительности, которые могут существовать в любое время. If you are an administrator of the machine, you should configure it to allocate enough memory to support the maximum number of performance counters that can exist at any time.
В реестре можно изменить объем памяти счетчика производительности для категорий WCF. You can change the amount of performance counter memory for WCF categories in the registry. Для этого необходимо добавить новое значение DWORD с именем FileMappingSize в три следующих расположения и задать для него требуемое значение в байтах. To do so, you need to add a new DWORD value named FileMappingSize to the three following locations, and set it to the desired value in bytes. Перезагрузите компьютер, чтобы эти изменения вступили в силу. Reboot your machine so that these changes are taken into effect.
HKLM\System\CurrentControlSet\Services\ServiceModelEndpoint 4.0.0.0\Performance HKLM\System\CurrentControlSet\Services\ServiceModelEndpoint 4.0.0.0\Performance
HKLM\System\CurrentControlSet\Services\ServiceModelOperation 4.0.0.0\Performance HKLM\System\CurrentControlSet\Services\ServiceModelOperation 4.0.0.0\Performance
HKLM\System\CurrentControlSet\Services\ServiceModelService 4.0.0.0\Performance HKLM\System\CurrentControlSet\Services\ServiceModelService 4.0.0.0\Performance
Если множество объектов (например, ServiceHost) удаляется, но ожидает сборки мусора, счетчик производительности PrivateBytes регистрирует необычно большое количество объектов. When a large number of objects (for example, ServiceHost) are disposed of but waiting to be garbage-collected, the PrivateBytes performance counter will register an unusually high number. Чтобы устранить эту проблему, можно либо добавить собственные счетчики, относящиеся к приложению, либо использовать атрибут performanceCounters , чтобы включить только счетчики уровня службы. To resolve this problem, you can either add your own application-specific counters, or use the performanceCounters attribute to enable only service-level counters.
Типы счетчиков производительности Types of Performance Counters
Счетчики производительности группируются по трем различным уровням: служба, конечная точка и операция. Performance counters are scoped to three different levels: Service, Endpoint and Operation.
Можно использовать инструментарий WMI, чтобы получить имя экземпляра счетчика производительности. You can use WMI to retrieve the name of a performance counter instance. Например, For example,
Имя экземпляра счетчика службы можно получить с помощью свойства «Каунтеринстанценаме» экземпляра службы WMI. Service counter instance name can be obtained through WMI Service instance’s «CounterInstanceName» property.
Имя экземпляра счетчика конечной точки можно получить с помощью свойства «Каунтеринстанценаме» экземпляра конечной точки WMI. Endpoint counter instance name can be obtained through WMI Endpoint instance’s «CounterInstanceName» property.
Имя экземпляра счетчика операции можно получить с помощью метода «Жетоператионкаунтеринстанценаме» экземпляра конечной точки WMI. Operation counter instance name can be obtained through WMI Endpoint instance’s «GetOperationCounterInstanceName» method.
Счетчики производительности службы Service performance counters
Счетчики производительности службы измеряют поведение службы в целом, их можно использовать для диагностики производительности всей службы. Service performance counters measure the service behavior as a whole and can be used to diagnose the performance of the whole service. Их можно просмотреть с помощью системного монитора, выбрав объект производительности ServiceModelService 4.0.0.0 . They can be found under the ServiceModelService 4.0.0.0 performance object when viewing with Performance Monitor. Экземпляры именуются по следующей схеме: The instances are named using the following pattern:
Счетчик в области действия службы агрегируется из счетчика в коллекции конечных точек. A counter in a service scope is aggregated from counter in a collection of endpoints.
Значение счетчиков производительности для создания экземпляра службы увеличивается при создании нового InstanceContext. Performance counters for service instance creation are incremented when a new InstanceContext is created. Обратите внимание, что новый InstanceContext создается даже при получении неактивирующего сообщения (с существующей службой) или при подключении к экземпляру из одного сеанса, завершении сеанса и последующем повторном подключении из другого сеанса. Note that a new InstanceContext is created even when you receive a non-activating message (with an existing service), or when you connect to an instance from one session, end the session, and then reconnect from another session.
Счетчики производительности конечных точек Endpoint performance counters
Счетчики производительности конечных точек позволяют просматривать данные о том, как именно конечная точка принимает сообщения. Endpoint performance counters enable you to look at data reflecting how an endpoint is accepting messages. Их можно просмотреть с помощью системного монитора, выбрав объект производительности ServiceModelEndpoint 4.0.0.0 . They can be found under the ServiceModelEndpoint 4.0.0.0 performance object when viewing using the Performance Monitor. Экземпляры именуются по следующей схеме: The instances are named using the following pattern:
(ServiceName).(ContractName)@(endpoint listener address)
Данные аналогичны данным, собираемым для отдельных операций, но агрегируются только на конечной точке. The data is similar to what is collected for individual operations, but is only aggregated across the endpoint.
Счетчик в области действия конечной точки агрегируется из счетчиков в коллекции операций. A counter in an endpoint scope is aggregated from counters in a collection of operations.
Если две конечные точки имеют идентичные имена контрактов и адреса, они сопоставляются с одним и тем же экземпляром счетчика. If two endpoints have identical contract names and addresses, they are mapped to the same counter instance.
Счетчики производительности операций Operation performance counters
Счетчики производительности операций можно просмотреть с помощью системного монитора, выбрав объект производительности ServiceModelOperation 4.0.0.0 . Operation performance counters are found under the ServiceModelOperation 4.0.0.0 performance object when viewing with the Performance Monitor. Каждая операция содержит отдельный экземпляр. Each operation has an individual instance. Следовательно, если указанный контракт имеет 10 операций, 10 экземпляров счетчика операций связаны с этим контрактом. That is, if a given contract has 10 operations, 10 operation counter instances are associated with that contract. Экземпляры объекта именуются по следующей схеме: The object instances are named using the following pattern:
(ServiceName).(ContractName).(OperationName)@(first endpoint listener address)
Этот счетчик позволяет измерить, как используется вызов и насколько успешно выполняется операция. This counter enables you to measure how the call is being used and how well the operation is performing.
Если счетчики видимы в нескольких областях, данные, полученные из более высокой области, агрегируются с данными, полученными из более низких областей. When counters are visible at multiple scopes, data gathered from a higher scope are aggregated with data from lower scopes. Например, Calls в конечной точке представляет сумму всех вызовов операций в конечной точке. Calls в службе представляет сумму все вызовов всех конечных точек в службе. For example, Calls at an endpoint represents the sum of all operation calls within the endpoint; Calls at a service represents the sum of all calls to all endpoints within the service.
При наличии одинаковых имен операций в контракте можно получить только экземпляры одного счетчика для обоих операций. If you have duplicate operation names on a contract, you only get one counter instances for both operations.
Программирование счетчиков производительности WCF Programming the WCF Performance Counters
Несколько файлов устанавливаются в папку установки пакета SDK, что позволяет программно получить доступ к счетчикам производительности WCF. Several files are installed in the SDK install folder so that you can access the WCF performance counters programmatically. Эти файлы перечислены ниже. These files are listed as follows:
- _Сервицемоделендпоинтперфкаунтерс. ВРГ_ServiceModelEndpointPerfCounters.vrg
- _Сервицемоделоператионперфкаунтерс. ВРГ_ServiceModelOperationPerfCounters.vrg
- _Сервицемоделсервицеперфкаунтерс. ВРГ_ServiceModelServicePerfCounters.vrg
- _Смсвчостперфкаунтерс. ВРГ_SMSvcHostPerfCounters.vrg
- _Трансактионбриджеперфкаунтерс. ВРГ_TransactionBridgePerfCounters.vrg
Дополнительные сведения о программном доступе к счетчикам см. в разделе Архитектура программирования счетчика производительности. For more information on how to access the counters programmatically, see Performance Counter Programming Architecture.