Как начать работу с профилированием производительности WCF - PullRequest
12 голосов
/ 14 октября 2010

Я пытаюсь выяснить, как профилировать службу WCF, чтобы можно было выявить любые узкие места.
Я нашел немного информации в сети, но ничего, что предполагает без предшествующего знания , где я нахожусь.

Какие рекомендованные БЕСПЛАТНЫЕ инструменты?

- visual studio tools
- clrprofiler 

Здесь - это информация, которую я нашел, используя vsperfcmd.exe для профилирования службы wcf, и в соответствии с этим это очень просто, но мне нужно заполнить пробелы в том, с чего начать. Я предполагаю скопировать VsPerfCLREnv и VsPerfCmd на сервер, на котором размещена моя служба wcf, и выполнить некоторые шаги по настройке, в которых я не совсем уверен. Я также не совсем уверен, как я смогу увидеть стек вызовов, чтобы оценить производительность каждого вызова.

clrprofiler кажется немного проще. Я предполагаю, что скопирую clrprofiler.exe на сервер File->Profile Service и добавлю команды name и start / stop. (это понятное имя или имя файла или отображаемое имя службы?) Я предполагаю, что тогда я выполню свои тесты для службы и смогу увидеть стек вызовов в clrprofiler. Это звучит правильно?

[править]
Я не очень заинтересован в тестировании сети, поскольку она находится на тестовом сервере, и это большой проект wcf с несколькими разработчиками, и я не могу вносить изменения в проект с единственной целью мониторинга производительности. Я хочу сосредоточиться на эффективности реальных методов в нем.

Любая помощь с самого начала приветствуется.

Ответы [ 5 ]

6 голосов
/ 15 октября 2010

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

Конечно, все остальные профилирования кода, БД и т. Д. Также являются подходящими. Вы даже можете использовать такой инструмент, как SoapUI , чтобы протестировать сетевые коммуникации и накладные расходы производительности на стороне клиента для более сквозного тестирования.

5 голосов
/ 30 ноября 2010

некоторые вещи, которые, как я узнал, кому-то могут пригодиться:

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

Visual Studio не работал для меня, чтобы профилировать мой сервис WCF,Я смог получить небольшую помощь от команды профилировщика VS, но никогда не выходил из нее с рабочим решением.

VS медлил с подключением и отключением профилировщика и часто инструктировал мои двоичные файлы и оставлял их вповрежденное состояние.

.net двоичные файлы не нуждаются в инструментировании, так как они содержат метаданные методов, что странно, что visual studio продолжала скрывать мои двоичные файлы, пытаясь их обработать.

Я такжепопробовал автономный профилировщик VS, но он очень сложен в использовании и требует перезагрузки моего сервера.

Я закончил тем, что получил внутренний профилировщик для работы (после получения частной сборки от команды), поэтому я не уверенсколько профилировщиков предназначено для работы со службой WCF.

Я фактически настроил профилировщик на просмотр службы WAS, а затем добавил свои дополнительные двоичные файлы в профилировщик.

Обозреватель процессов полезенпри устранении неполадок, если профилировщик подключен или нет.Используйте его для просмотра среды inetinfo.exe

1 голос
/ 15 октября 2010

Инструменты, которые вы должны изучить: svctracelogviewer (и включить трассировку как в вашей службе, так и в клиентах). SoapUI для имитации нагрузки (и анализа) и Fiddler, отличный инструмент для анализа и анализа HTTP.

1 голос
/ 15 октября 2010

В дополнение к комментариям Майка вы можете использовать встроенные счетчики производительности WCF для просмотра ряда показателей, связанных с производительностью, а также время вызовов на трассировке WCF. Как только вы узнаете, какие операции «медленные», обычно проще добавить какой-либо пользовательский код синхронизации / регистрации в эти операции, чем использовать профилировщик общего назначения для чего-то подобного. Это от кого-то, кто работал на коммерческих профилировщиках.

1 голос
/ 15 октября 2010

Можете ли вы запустить его под отладчиком?

Вы можете выдержать простой старомодный метод, который просто работает ? Вот один.

...