Подтвердить что ты не робот

Как начать работу с профилированием производительности WCF

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

Какие рекомендуемые бесплатные инструменты?

- visual studio tools
- clrprofiler 

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

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

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

Приветствуется всякая помощь при запуске.

4b9b3361

Ответ 1

некоторые вещи, которые я узнал, что кто-то может найти полезные:

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

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

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

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

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

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

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

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

Ответ 2

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

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

Ответ 3

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

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

Ответ 4

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

Ответ 5

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