Как работать со счетчиками производительности и службой 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), или не предоставит подходящий обходной путь, мы работаем вслепую.