Существует ли какой-либо инструмент профилирования производительности .NET, который я могу подключить к работающей службе Windows и выполнить базовую выборку стековых вызовов?Было бы замечательно, если бы инструмент не требовал установки, потому что мне нужно будет получить много красных лент через ИТ-отдел клиента.
Спасибо
Характер проблемы с производительностьюЭта программа, имеющая проблемы с производительностью, работает как служба Windows и обрабатывает сообщения о доходах от 200+ мобильных устройств.Обычно эта программа может обрабатывать не менее 10 сообщений в секунду.К сожалению, после недавнего обновления эта программа по некоторым причинам больше не может обрабатывать сообщения достаточно быстро, обычно около 7 часов утра.Приходит сообщение, и оно может находиться во внутренней очереди программы более 10 минут, прежде чем его можно будет обработать.Мы также заметили, что программа использует процессор выше, чем обычно.Обычно это должно быть 5% на восьмиядерном компьютере, теперь это 20-25%.
Программа делает больше, чем просто обрабатывает входящие сообщения, она также поддерживает базу данных и предоставляет данные клиентам.Он имеет пять потоков, обрабатывающих входящие сообщения, и любое задание обслуживания выполняется в его потоке.
Текущий обходной путь - перезапустить службу, когда происходит замедление.После перезапуска программа снова запустится нормально (загрузка процессора ниже 5%).До следующего утра, около 7 часов утра, это не могло произойти.Все сообщения в очереди отбрасывались после каждого перезапуска.Обычно 7:00 и 17:00 - это время, когда мы получаем много сообщений, но, похоже, проблема возникает только в 7:00.
Наша команда пыталась воспроизвести программу дома, используя смоделированные сообщения, и сделала кодсравнение, чтобы увидеть, есть ли критическое узкое место.