IIS Worker Process (w3wp) 로 높은 CPU 사용량 문제를 해결하는 방법 (2)

728x90
반응형

 

 

 


 

 

들어가며

이 포스트는 아래의 Blog를 번역한 글이며, 영어공부 겸, 지식을 전달하기 위한 목적으로 작성된 글입니다.

보시기 불편하시거나, 해당글의 무분별한 포스팅이 문제가 된다면, 삭제하겠습니다.

 

https://stackify.com/w3wp-high-cpu-usage/

 

Guide to w3wp.exe High CPU Usage for IIS Worker Processes

If you're having problems with w3wp.exe high CPU usage, get tips to troubleshoot IIS worker process for your ASP.NET web app.

stackify.com

 

 

 

 

6가지 공통된 원인과 IIS 작업자 프로세스의 높은 CPU문제를 해결하는 방법 

w3wp.exe IIS 작업자 프로세스의 높은 CPU 점유율은 많은 이유가 있습니다.

6개의 공통된 원인을 이 포스트에서 선택했습니다. 

  • ASP.NET 어플리케이션의 높은 에러율
  • 높은 CPU의 원인이 되는 웹 트래픽 증가.
  • 어플리케이션의 의존성 문제
  • GC (Garbage collection)
  • ASP.NET 파이프 라인에서 요청이 차된되거나, 중단된 경우
  • 최적화가 필요한 비효율적인 .NET 코드

 

 

 

1. ASP.NET 어플리케이션의 높은 에러율 

응용프로그램에서 응용프로그램의 에러가 발생할 수 있으며, 사용자는 알지 못합니다. 일부 오류는 당신의 유저가 특정형식의 오류 메시지를 받는 원인이 될것입니다. 다른 오류가 발생할 수 있고, 그것에 대해 아무도 알지 못합니다.

당신이 에러 모니터링 또는 응용프로그램 성능 관리 툴을 사용한다면, 높은 에러율을 체크할 수 있습니다

윈도우즈 Event Viewr, IIS 로그 등에서 응용프로그램 에러율과 실제 에러를 찾을 수 있는 몇가지 위치가 있습니다.

 

 

에러율을 위한 윈도우즈 성능 카운터

높은 에러율을 검토할 것을 권장하는, 두가지 특정 성능 카운터를 추천한다. 윈도우즈에서 성능 모니터를 열고, 챠트보기에서 카운터를 추가하여야 합니다.

  • .NET CLR Exceptions -> # of Exceps Thrown / Sec : 이것은 당신의 응용프로그램의 많은 예외 상황을 보여줄 겁니다. 당신의 응용프로그램에 큰 성능 문제의 원인이 되는 숨겨진 많은 오류가 있을 수 있습니다. 예외는 않좋으나, 그것을 피할 수는 없습니다.
  • W3SVC_W3WP -> %500 HTTP Response Sent : 상태 코드가 500인 모든 요청은 내부 서버코드 에러 입니다. 이 확율이 매우 낮은지 확인하세요. 0~1% 여야 합니다.

 

 

 

 

 

2. 높은 CPU의 원인이 되는 웹 트래픽 증가. 

w3wp.exe 의 높은 CPU 사용량에 대한 가장 간단한 설명 중 하나는 웹 트래픽 증가 입니다. 그러나 정상적인 트래픽 양에 대한 기준이 없는 경우, 트래픽이 증가했는지 알기 어려울 수 있습니다.

트래픽을 추적하는 응용프로그램 모니터링 툴을 사용하는 경우, 이를 확인하고 트래픽 레벨이 변경되었는지 확인하십시오.

트레픽 레벨이 변경되었는지 알수있는 방법이 없는 경우, IIS 로그 파일을 사용해서 알아 볼 수 있습니다.

 

VisualLogParser 또는 Log Parser Lizard를 이용해서 질의할 수 있습니다.

 

또는 Requests / Sec 와 Requests Corrent 에 대한 윈도우 성능 카운터가 있어서 현재 트래픽 속도를 실시간으로 확인 할 수 있습니다. 

 

웹 트래픽 증가에 대한 가능한 이유

트레픽 레벨이 높은경우, 당신은 그 수준이 높아야 하는지 평가해야 합니다. 트래픽 레벨 증가와 관련하여 고려해야 할 몇가지 사항은 다음과 같습니다.

  • 고객 또는 유저 : 특별한 고객, 유저, 또는 자원으로 부터 트래픽이 급증했습니까? 아마도 가끔 당신의 사이트에 접속하는 것이 작동하지 않을 수 있습니다. 특정 IP 주소를 차단이 필요할 수 있습니다.
  • Bots : 비슷한 특별한 유저가 많은 트래픽의 원인이라면, 그것은 봇일 수 있습니다. IIS 로그에서 당신의 사이트 접속하는데 사용되는 사용자 에이전트를 확인하세요. 
  • 오프라 효과 : 오프라(오프라윈프리)나 누군가가 당신의 제품을 언급했나요? 방금 입소문을 냈나요? 엄청나게 많은 관심을 받는 것은 좋은 일이지만, 이를 처리하기 위해 성능을 확장해야 할 수 있습니다.

당신의 사이트가 많은 트래픽을 받을 경우, 대용량 서버(스케일업) 또는 다수의 서버(스케일아웃)이 필요할 수 있습니다.

그러나 초당 많은 요청을 받지 않을 경우, 트래픽이 문제가 되지 않을 수 있습니다.

 

많은 ASP.NET 어플리케이션은 초당 10-30개 요청이 있습니다. 그러나 바쁜 앱에서 초당 100개 이상의 요청을 수행하는 가벼운 요청도 보았습니다.

하나의 웹앱에서 다른 웹 앱으로의 트래픽 양과 관련해서, CPU 사용량은 크게 다릅니다.

 

 

 

 

 

 

 

3. 어플리케이션의 의존성 문제 

요즘의 웹 어플리케이션은 다양한 유형의 외부 서비스 및 종속성을 활용합니다. SQL, NoSQL, 대기열, 캐싱 및 다양한 외부 HTTP 웹 서비스가 포함됩니다.

 

어플리케이션 종속송으로 인한 속도 저하로 인해 어플리케이션 성능문제가 발생할 수 있습니다. 

가장 일반적인 문제는 느린 SQL 쿼리문 또는 외부 HTTP 웹 서비스 입니다. 

 

 

 

 

 

 

 

참조

https://stackify.com/w3wp-high-cpu-usage/

 

 

 

 

 

 

 

 

END


 

 

 

 

728x90