2011-02-17 4 views
5

프로덕션 서버에서 실행중인 asp.net 응용 프로그램이 있습니다.ASP.Net IIS7 요청 당 CPU 사용량 얻기

서버의 CPU 사용량이 80-90 %로 매우 높습니다.

그러나 CPU가 100 %를 초과하지 않는 한 각 요청은 너무 오래 걸리지 않는 것처럼 보입니다.

높은 CPU 사용량이 소수의 높은 CPU 요청으로 인한 것인지 또는 일반 부하가 많은 경우인지 확인하려면 프로파일 링 데이터를 얻어야합니다.

더 많은 코어를 컴퓨터에 추가 할 수 있으며 앱을 웹 팜으로 만들 수 있지만 비용 및 성능을 증명할 증거가 필요할 것입니다.

각 페이지 요청에 대한 CPU 사용량을 파일에 기록하는 방법이 있습니까?

답변

6

실제로 카운터를 사용하여 개별 요청에 대한 CPU 사용률을 직접 결정할 수는 없습니다. ASP.NET 요청은 사용 가능한 모든 CPU 코어에 부하가 분산 된 작업자 프로세스에 의해 처리됩니다. 각 코어 또는 전체 프로세스 당 CPU 사용량은 측정 할 수 있지만 요청 당 측정 할 수는 없습니다.

IIS7 고급 로깅을 사용하여 간접적으로 CPU 사용량이 많은 요청을 격리 할 수 ​​있습니다. here에서 다운로드 할 수 있습니다. 사용자 지정 로깅을 사용하는 방법은 this blog을 참조하십시오. 로그 정의에 "CPU Utilization"필드를 추가해야합니다. 새로운 IIS 로그 파일은 각 요청 줄의 CPU 사용률을 보여줍니다. 그러나 이것은 요청 처리에 대한 실제 CPU 사용 이 아니며 요청 처리 중 동안의 CPU 사용량은 입니다. 잠재적으로 CPU 사용량이 많은 의심스러운 요청을 결정할 때도이 정보를 사용할 수 있습니다.

로드 테스트를 통해 이러한 요청을 개별적으로 테스트하여 합리적인로드로 과도한 CPU 사용량을 생성하는지 확인합니다. Microsoft로드 테스트 도구는 VSTS 2010 Ultimate Edition 또는 VSTS 2008 Test Edition 또는 Team Suite에 포함되어 있습니다. 또는 무료 Microsoft 명령 줄 HTTP로드 생성기 WCAT을 사용할 수 있습니다. 또한 다양한로드 패턴 및 그래프 성능 메트릭으로 Fiddler 세션을 다시 재생하는 StresStimulus이라는로드 테스트 용 무료 Fiddler 확장을 개발했습니다.

프로덕션 환경에서 부하 테스트를 실행할 때주의하십시오. 원하는 부하에서 각 요청을 몇 초 동안 실행할 수 있습니다. 최적화되지 않은 페이지를 찾을 수 없으면이 요소를 사용하여 하드웨어 업그레이드를 정당화하십시오.

+0

+1 IIS 고급 로깅! –