2012-02-14 4 views
3

현재 C#으로 작성된 .net 웹 응용 프로그램에서 성능 테스트를 실행 중입니다. Windows 서버 2008에서 200 명의 사용자로드를 시뮬레이트하는 테스트 도구가 있습니다.높은 CPU 작업 프로세스

이로 인해 나에게 우려되는 ~ 80 %의 매우 큰 CPU 사용이 발생했습니다. 높은 코드 사용을 유발하는 웹 응용 프로그램의 작업 프로세스로서 내 코드에서 문제가 될 수 있다고 생각합니다.

이 문제를 일으키는 코드에 어떤 문제가 있는지 찾기 위해 어떻게 디버깅 할 수 있습니까? 이 도구로 도움이 될만한 도구가 있습니까? 나는 상태를 수집하기 위해 서버에서 perf 모니터를 실행하고 있지만 이것은 지금까지 나를 돕는 데만 사용됩니다.

+0

어떻게이 작업을 수행 했습니까? Diego의 답변으로 높은 CPU를 식별 할 수있게 되었습니까? –

답변

2

은 서버에서 클라이언트 코드 (200 명의 사용자를 시뮬레이트하는 테스트 도구)를 분리하고 클라이언트를 다른 시스템에 배치합니다.

종종 클라이언트 코드가 병목입니다.

3

Edition Visual Studio의 Ultimate 및 Premium에는 대부분의 CPU를 사용하는 메서드 호출을 빠르게 찾을 수있는 프로파일 러가 있습니다. 참조 : http://msdn.microsoft.com/en-us/library/ms182372.aspx

대체 방법은 ANTS Profiler이며, 21 일 시험 버전이며 정말 좋습니다. 참조 :

1

@Diego 답이 가장 좋은 결과를 얻지 못하면 200에서 200,000 명의 사용자에게이를 부치고 DebugDiag를 실행하여 높은 CPU 설정으로 덤프를 캡처하고 상자를 크래시하도록 설정하십시오. 내가 주석으로이 말을하려고했지만, 난 내가 당신에게 단계를 줄 거라고 생각 : IIS와 높은 CPU 사용률 문제를 정의


높은 CPU가 확인을 할 때 IIS 프로세스 (INETINFO.EXE, DLLHOST. EXE, W3WP.EXE)은 들어오는 요청에 대한 응답을 중지하고 과도한 CPU 사용률로 인해 웹 페이지를 제공하지 않습니다. 아래 단계에 따라 필요한 데이터를 얻습니다.

문제 해결 단계

  1. 서버 http://www.microsoft.com/downloads/details.aspx?FamilyID=9bfa49bc-376b-4a54-95aa-73c9156706e7&DisplayLang=en에서 DebugDiag를 설치합니다. 기본 설치 경로는 C : \ Program Files \ IIS Resources \ DebugDiag이며 설치 중에 변경할 수 있습니다. -> 프로그램 -> IIS 진단)
    b)는 도구 메뉴로 이동 -> 옵션 및 설정
    c)가 선택
    이 A) 열기 DebugDiag (시작 : 문제가 발생하기 전에

  2. 성능 모니터 로깅 설정 성능 로그 탭
    d) 성능 카운터 데이터 로깅 사용
    e) 확인을 클릭하십시오.
    참고 : 데이터 수집 간격 및 모니터링 시작 시간은 CPU 스파이크가 재생 될 때 주관적입니다.

  3. 디버그 예외 캐칭 (IIS5 및 IIS5)의 선택을 취소하십시오.1) 다음 단계 :
    는) IIS
    b)는 컴퓨터 이름을 마우스 오른쪽 단추로 클릭하고) 등록을
    C를 클릭하여 마스터 WWW의 속성에 대한
    D를 편집 버튼을 클릭)의 MMC를 열고 홈으로 이동 디렉터리 탭
    전자) 바닥
    F쪽으로 구성 버튼을 클릭)을
    g)을 함께 만들기 끊기 규칙을 확인

  4. 을 클릭하여 "디버그 예외 사용" "프로세스 옵션"탭으로 이동하여 취소 다음 단계 :
    a) DebugDiag 열기 (시작 -> 프로그램 -> IIS 진단)
    b) "IIS Hang"을 선택하고 다음을 클릭하십시오.
    c) "URL 추가"를 클릭하고 정지 URL을 입력하십시오. http://ComputerName/HelloWorld.aspx을 입력하고 확인을 클릭하십시오. "지정된 URL을 테스트"할 것인지 묻는 메시지가 나타나면 예를 선택하십시오.
    d)는 확인을 클릭하고 다음
    전자 클릭) "덤프 대상 추가"를 원하는 대상 유형
    F를 선택 클릭) 확인을 클릭하고 다음을 g 클릭) "규칙 이름"에 대한 다음을 클릭합니다. "사용자 덤프 위치"는 여기에서 변경할 수 있습니다.
    h) "지금 규칙 활성화"를 선택하고 완료를 클릭하십시오. 상태가 활성임을 확인하십시오. 덤프 파일이 생성 될 때마다 Userdump Count가 증가합니다.

  5. 설치시 서버의 CPU 상태가 높으면 수동으로 데이터를 가져옵니다. DebugDiag에서 프로세스 탭으로 이동하여 프로세스를 마우스 오른쪽 단추로 클릭하고 "전체 사용자 덤프 만들기"를 선택하십시오. -> 프로그램 -> IIS 진단)
    b)는 도구 메뉴로 이동 -> 옵션 및 설정
    A) 열기 DebugDiag (시작 :

  6. 정지 성능 모니터링 프로세스의 덤프를 복용 후 약 2 분 로깅 C) OK

  7. 는 "고급 분석"탭을 선택하고 "데이터 파일 추가"를 클릭하여 덤프 분석을 클릭하여 성능 로그 탭
    D)를 클릭하여 "사용 안함 성능 카운터 데이터 로깅"
    전자)을 선택합니다. .dmp가 추가되면 "Crash/Hang Analyzers"스크립트를 선택하고 "Start Analysis"를 클릭하십시오. 완료되면 C : \ Program Files \ IIS Resources \ DebugDiag \ Reports에 보고서 (.mht)가 만들어져 표시됩니다 사용자 지정 DLL을 사용하는 경우 사용자 지정 PDB 파일에 대한 기호 경로 (도구 메뉴 -> 옵션 및 설정 -> 기호 검색 경로)를 추가 할 수 있습니다 ..

  8. DebugDiag를 사용하여 데이터 압축 도구 메뉴 -> 증가 캐비닛 파일 만들기) 여기에 게시 /이 파일을 보내
+0

와우, 어떻게이 일을 성취하셨습니까?'INTERNET'(http://forums.iis.net/t/997780.aspx)에서 실제로 텍스트를 복사하는 방법을 찾을 수 있었습니까? : 오 놀라운! ;) – user492238

+0

@ user492238 Microsoft 개발자 지원을 할 때 템플릿을 사용했습니다. –

+0

게시 할 때이를 명확하게해야합니다. 그리고 이유를 제공하지 않고 downvoting은 당신에게 존경을 가져 오지 않을거야 ...;) – user492238

1

재미있는 답변을 지금까지 Psscor4 도구가 -... SOS.dll 디버깅 확장의 후계자는 많은 라이브 데이터를 조사하는 데 도움이 CLR입니다. Tess 'od Toms 블로그의 수치. ASP.NET 디버깅을위한 많은 것들.

또한 PerfView 도구를 살펴보십시오. 아직 테스트하지는 않았지만 CLPProfiler보다 큰 크기의 힙을 처리 할 수 ​​있다고 주장합니다.

+0

Bang! psscore는 지금 공개 되니?! 쾅. 커뮤니티를위한 멋진 것들! –

+2

예. 이미 알고있는 것보다 msdn의 개발자 블로그를 따라야합니다.) – user492238