2010-05-31 1 views
0

우리는 응용 프로그램 풀을 재활용 할 때까지 w3wp.exe가 100 % CPU를 사용하는 asp.net 응용 프로그램 (4 코어 - 4 스레드 25 %)과 cpu로드를 절대로 사용하지 않습니다. 수영장). 우리의 에러 로그에는 아무 것도 없습니다. 예외가 발생하지 않았거나 적어도 catch하지 않았습니다. 따라서 코드 문제 (무한 루프/교착 상태)가 의심됩니다. 이 문제는 고 부하 (수천 사용자)로 몇 시간 동안 실행 한 후에 만 ​​발생합니다.ASP.NET 제작 응용 프로그램의 w3wp.exe에서 100 % CPU를 사용 중입니다. 문제를 찾는 방법?

CPU로드를 유발하는 기존 스레드 중 하나를 프로파일 링하는 방법이 있습니까? JetBrains의 DotTrace Profiler를 살펴본 후 API 및 사용자 프로파일 링의 한계에 맞지 않는 것처럼 보였으므로 테스트 환경에서 문제를 재현하지 못했습니다. 응용 프로그램은 SQL Server 2005, LINQ2SQL 및 System.Transactions API를 사용합니다.

문제를 찾으려면 모든 제안?

답변

2

현재 실행중인 응용 프로그램의 메모리 덤프를 만든 다음 실행 응용 프로그램의 메모리 프로필을보고 WinDbg and SoS (Son of Strike)을 다운로드하여 성능 문제가있는 곳에서 가장 많은 메모리를 차지하는 부분을 확인하십시오. .NET 4 응용 프로그램을 사용하는 경우 Visual Studio 2010에서 메모리 덤프를로드하고 메모리 사용량을 시각적으로 볼 수 있습니다. 현재 실행중인 프로세스가 CPU 사용량을 측정 할 수 있는지 확인할 수 있습니다.

dnr tv episode - Tess Ferrandez on Debugging in .NET은 WinDbg를 사용하여 ASP.NET 응용 프로그램을 디버깅하는 방법에 대한 좋은 소개입니다.

+3

최신 Windows 버전에서는 작업 관리자를 사용하여 프로세스 덤프를 수행 할 수 있습니다. – Steven