IIS Worker Process (w3wp) 로 높은 CPU 사용량 문제를 해결하는 방법 (2)
들어가며 |
이 포스트는 아래의 Blog를 번역한 글이며, 영어공부 겸, 지식을 전달하기 위한 목적으로 작성된 글입니다.
보시기 불편하시거나, 해당글의 무분별한 포스팅이 문제가 된다면, 삭제하겠습니다.
https://stackify.com/w3wp-high-cpu-usage/
▶ 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
'WebServer' 카테고리의 다른 글
[IIS] Pkgmgr(패키지매니저)를 이용한 IIS 워크로드 설치방법 (IIS 7.5) (0) | 2023.11.10 |
---|---|
IIS Worker Process (w3wp) 로 높은 CPU 사용량 문제를 해결하는 방법 (3) (1) | 2023.10.09 |
IIS Worker Process (w3wp) 로 높은 CPU 사용량 문제를 해결하는 방법 (1) (0) | 2023.09.19 |
[IIS] PHP 업로드 용량 관련 설정하기 (0) | 2023.05.08 |
[IIS] Php 설정 시, <handler> scriptProcessor를 <fastCGI> 애플리케이션 구성에서 찾을 수 없습니다. 오류해결 (0) | 2023.04.17 |