Как я могу профилировать производительность приложения .NET, уже развернутого у клиента?

StackOverflow https://stackoverflow.com/questions/416613

Вопрос

У меня есть несколько клиентов, у которых мое приложение WinForms работает не так хорошо, как у других клиентов.Здесь, в офисе, я использую dotTrace от JetBrain, но это не помогает мне находить узкие места на машинах наших клиентов.Как я могу профилировать производительность приложения .NET, уже развернутого у клиента?Существуют ли какие-либо инструменты профилирования с распространяемым компонентом, позволяющим мне получать результаты профилирования, которые нельзя будет использовать до тех пор, пока я не верну результаты (снимок в dotTrace) обратно в полноценный инструмент профилирования?

Обновлять: С НПроф распространяется свободно, я подумываю о развертывании его на рабочей станции клиента.О результатах сообщу здесь.

Это было полезно?

Решение

Я не знаком с dotTrace, но я использовал инструменты инструментирования и профилирования Visual Studio 2008 в контексте Visual Studio и полагаю, что они распространяются вместе с .NET 3.5 SDK.

Инструмент VSInstr.exe:http://msdn.microsoft.com/en-us/library/ms182402.aspxбудет инструментировать развернутый двоичный файл.

ВСПерфкмд:http://msdn.microsoft.com/en-us/library/ms182403.aspxможет собирать данные о производительности из инструментированного приложения.

Я никогда не делал этого напрямую и исключительно из командной строки, поэтому не могу вам в этом помочь, но я решил, что это, по крайней мере, еще один вариант для вас.

Другие советы

Поэтому я думаю, что вам может понадобиться метод измерения времени размещения рекламы. Какими бы неблагодарными они ни были, я мог бы посмотреть на добавление счетчиков производительности в ваше приложение. См. System.Diagnostics . Я широко использовал для мониторинга приложений в развертывании. Я обнаружил, что профилировщики в то время как круто иногда скрывают определенные проблемы из-за их накладных расходов. Например, если ваше приложение обращается к базе данных, а диск работает медленно, в результате чего запросы выполняются дольше, что может быть неочевидно в профилировщике, поскольку приложение будет работать медленнее в целом.

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

Мы уже знаем, что ваш код работает, поскольку на некоторых клиентских установках он работает нормально. Так что подумайте о добавлении инструментов в ваше приложение. Это один из тех неопрятных, но важных элементов написания надежного программного обеспечения, как хорошее ведение журнала. Это не весело, но, на мой взгляд, это нужно сделать. Часто это единственное, что дает вам представление о том, что ваше приложение делает при развертывании. Текущее приложение, над которым я работаю, увеличилось с 20 счетчиков производительности в Rev 1 до 150 в Rev 2. Я не слежу за большинством из них все время, но за то, что предупреждаю меня о проблемах с производительностью и надежностью, они того стоили. .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top