Инструмент для профилирования производственного кода .NET - PullRequest
4 голосов
/ 11 апреля 2011

Существует ли какой-либо инструмент профилирования производительности .NET, который я могу подключить к работающей службе Windows и выполнить базовую выборку стековых вызовов?Было бы замечательно, если бы инструмент не требовал установки, потому что мне нужно будет получить много красных лент через ИТ-отдел клиента.

Спасибо


Характер проблемы с производительностьюЭта программа, имеющая проблемы с производительностью, работает как служба Windows и обрабатывает сообщения о доходах от 200+ мобильных устройств.Обычно эта программа может обрабатывать не менее 10 сообщений в секунду.К сожалению, после недавнего обновления эта программа по некоторым причинам больше не может обрабатывать сообщения достаточно быстро, обычно около 7 часов утра.Приходит сообщение, и оно может находиться во внутренней очереди программы более 10 минут, прежде чем его можно будет обработать.Мы также заметили, что программа использует процессор выше, чем обычно.Обычно это должно быть 5% на восьмиядерном компьютере, теперь это 20-25%.

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

Текущий обходной путь - перезапустить службу, когда происходит замедление.После перезапуска программа снова запустится нормально (загрузка процессора ниже 5%).До следующего утра, около 7 часов утра, это не могло произойти.Все сообщения в очереди отбрасывались после каждого перезапуска.Обычно 7:00 и 17:00 - это время, когда мы получаем много сообщений, но, похоже, проблема возникает только в 7:00.

Наша команда пыталась воспроизвести программу дома, используя смоделированные сообщения, и сделала кодсравнение, чтобы увидеть, есть ли критическое узкое место.

Ответы [ 4 ]

2 голосов
/ 08 марта 2019

Время прошло, и есть еще один инструмент для перечисления: CodeTrack . Можно использовать без установки.

2 голосов
/ 11 апреля 2011

Я не знаю ни одного профилировщика, который можно использовать без их установки, поэтому в конечном итоге вам, возможно, придется договориться с ИТ-отделом клиента.

Однако вы можете получить некоторое представлениеглядя на счетчики производительности .NET.Возможно, служба делает сборку мусора по некоторым причинам.

Если это не дает никаких подсказок, вы можете использовать Process Explorer из SysInternals.Он может быть запущен без предварительной установки.В окне свойств есть потоки, которые покажут вам все потоки в процессе, а также время их выполнения, что может быть полезно.

1 голос
/ 11 апреля 2011

Проверьте, соответствует ли AVICode (недавно приобретенный Microsoft) вашим потребностям.Этот продукт предназначен для мониторинга производительности приложений в производственных средах.Я не смотрел этот продукт в течение 10 лет, но когда я смотрел на него раньше, он подчеркивал возможность получать информацию об исключениях и стеки вызовов из приложений, работающих в производстве, с минимальными издержками.Он был построен на основе API профилирования .NET, поэтому я не удивлюсь, если он также предоставит возможности для сценария использования вашего процессора.Я не знаю подробностей о том, что требуется для установки / включения его на сервере, поэтому я не уверен, легко ли это устранит препятствия для вашего ИТ-отдела.счетчики для .NET Framework , которые можно включить, не затрагивая ваше приложение или его конфигурацию.

0 голосов
/ 14 апреля 2011

Спасибо за все предложения.

Я пробовал несколько инструментов для профилирования, но все они требуют установки, а некоторые стоят денег.

Пробовал с помощью " Средства отладки Windows "+" Process Explorer"+" Process Monitor", чтобы посмотреть, смогу ли я получить снимок трассировки стека работающего потока.К сожалению, не удается заставить работать наш собственный файл управляемых символов (pdb).Я вижу все вызовы API ядра, но не мой собственный код.

К счастью, наш клиент разрешил нам установить профилировщик.Если у вас установлена ​​версия Visual Studio Premium или Enterprise, она поставляется с автономным профилировщиком .Мне удалось получить отчет профиля на клиентском компьютере и проанализировать отчет с помощью Visual Studio.

...