Как работать со счетчиками производительности и службой WCF в IIS?
Привет,
У меня есть служба WCF в IIS7, которая взаимодействует с приложением winform по TCP(WAS), теперь мне нужно контролировать производительность.
Я добавил Это в интернете.конфигурационный файл:
<system.serviceModel>
<diagnostics performanceCounters="All" />
после открытия монитора производительности я запускаю несколько тестов с помощью winform, чтобы убедиться, что служба активирована.
затем я открываю монитор производительности (live), щелкните правой кнопкой мыши и добавьте счетчики. Я расширяю ServiceModelService 4.0.0.0 и выберите вызовы и длительность вызовов, я также выбираю свою службу (svc), которая указана в экземпляре выбранного объекта listbox и нажмите кнопку Добавить.
при выборе вызовов и продолжительности вызовов в ServiceModelOperation 4.0.0.0, однако, нет экземпляра или операции для выбора? То же самое касается ServiceModelEndpoint 4.0.0.0?
при нажатии Ok будут добавлены два счетчика (ServiceModelService).
затем я нажимаю разморозить дисплей и запустить мое приложение winform, что делает пару звонков, однако я ничего не вижу в мониторе производительности. Я попытался щелкнуть правой кнопкой мыши на одном из счетчиков производительности и выбрать "масштабировать выбранный счетчик", но это ничего не делает?
цель состоит в том, чтобы просто посмотреть, насколько хорошо работает служба WCF (скорость, продолжительность, количество, соединения и т. д.), а также было бы здорово проверить отдельные операции.
пожалуйста, помогите!
Примечание. : это статья, которой я пытался следовать : http://dkochnev.blogspot.com/2011/06/wcf-framework-40-monitoring-service.html
2 ответов
службы WCF включают счетчики производительности, которые можно отслеживать с помощью Производительность Windows Монитор (Perfmon.исполняемый.) Это можно запустить из средств администрирования в Windows Server 2003.
счетчики производительности можно включить в раздел диагностики .файл конфигурации для службы, как показано в следующем примере конфигурации:
<configuration>
<system.serviceModel>
<diagnostics performanceCounters="All" />
</system.serviceModel>
</configuration>
вы можете проверить эти статьи, которые могут помочь вам в использовании производительности счетчики для служб WCF:
похоже, что это может быть ошибка (или особенность), как счетчики производительности труда. После некоторого тычка, я нашел это на форумы MSDN:
У меня такая же проблема. Похоже, что Microsoft обрезает хвост конец имени операции при именовании экземпляра счетчика. Они замените усеченную часть какой-то 2-значной базой-10 magic число. Я предполагаю, что это гашиш, но кто знает, как это на самом деле сгенерированный. Этот rub заключается в том, что этот номер не гарантируется уникальным и может вызывать коллизии в именах счетчиков. Если такое столкновение произойдет, кажется, что все счетчики конечных точек и операций исчезают (в крайней мере для меня).
У меня есть два метода с именем UpdateMarkupChunk и UpdateMarkupCancel. Если Я комментирую один или другой, чтобы другой не существовал, они оба разрешают UpdateMarkupC53 в имени экземпляра счетчика. когда я прокомментируйте их обоих, ни один из счетчиков экземпляры появляются на ServiceModelEndpoint или ServiceModelOperation.
можете ли вы предложить обходной путь для этого, Microsoft? У меня есть постановка сервис уже на месте, который я хотел бы контролировать и менять имена операций не являются опцией.
и Microsoft ответила:
вы правы. И это поведение намеренно. Существует ограничение на длина имени экземпляра счетчика производительности.
счетчики представления деятельности найдены под ServiceModelOperation 4.0.0.0 объект производительности при просмотре с Системного Монитора (Perfmon.исполняемый.) Каждая операция имеет индивидуальный пример. То есть, если данный контракт имеет 10 операций, 10 операций экземпляры counter связаны с этим контрактом. Объект экземпляры называются по следующему шаблону:
(ServiceName).(Аргумент contractname).(OperationName)@(прослушиватель первой конечной точки адрес)
когда имя экземпляра счетчика Windows Communication Foundation (WCF) превышает максимальную длину, WCF заменяет часть экземпляра имя со значением хэша.
таким образом, кажется, из-за этого максимального ограничения имени, большие шансы хэш-столкновения, когда есть только двухзначный хэш-суффикс, и что, когда два экземпляра счетчика имеют одно и то же имя, он стирает весь счетчик, что это не на самом деле вероятный.
что более чем немного расстраивает. Поэтому, если Microsoft не исправит эту проблему (либо длинные хэш-значения, либо лучшую обработку столкновений счетчиками perf), или не предоставит подходящий обходной путь, мы работаем вслепую.