w3wp.exe в производственном приложении ASP.NET использует 100% ЦП. Как найти проблему? - PullRequest
0 голосов
/ 31 мая 2010

у нас есть производственное приложение asp.net, где w3wp.exe загружает 100% ЦП (4 ядра - 4 потока по 25%), и загрузка ЦП никогда не снижается, пока мы не перезапустим пул приложений (приложение находится в одиночестве в пул приложений). В нашем журнале ошибок ничего нет, исключений нет (или, по крайней мере, мы их не перехватываем), поэтому мы подозреваем, что это проблема кода (бесконечный цикл / тупик). Проблема возникает только после нескольких часов работы с высокой нагрузкой (несколько тысяч пользователей).

Есть ли способ профилировать один из существующих потоков, который вызывает загрузку процессора? После изучения DotTrace Profiler в JetBrains кажется, что ограничения Profiling API и человека невозможны, поэтому мы не можем воспроизвести проблему в нашей среде тестирования. Приложение использует SQL Server 2005, LINQ2SQL и System.Transactions API.

Любое предложение, чтобы найти проблему?

1 Ответ

2 голосов
/ 31 мая 2010

Создайте дамп памяти запущенного в данный момент приложения и затем загрузите WinDbg и SoS (Сын Страйка) посмотрите на профиль памяти запущенного приложения, чтобы увидеть, что потребляет больше всего памяти, где проблемы с производительностью. Если у вас есть приложение .NET 4, вы можете загрузить дамп памяти в Visual Studio 2010 и более наглядно взглянуть на то, что потребляет память. Вы увидите, какие процессы запущены в данный момент, и сможете оценить их в зависимости от загрузки процессора.

Телевизионный эпизод dnr - Тесс Феррандес об отладке в .NET - хорошее введение в использование WinDbg для отладки приложения ASP.NET.

...