w3wp.exe의 기능을 어떻게 알 수 있습니까? (또는 성능 문제를 진단하는 방법) 항상 매우

Google에서 만든 사이트에서 성능 문제가 발생하여 진단을 시작하는 방법을 정확히 모릅니다.

간단한 설명은 다음과 같습니다. 트래픽이 거의없는 매우 작은 사이트 ( http://hearablog.com )가 크 래피 전용 서버에 있고 CPU가 항상 매우 높으며 때때로 100 분 동안 100 분을 유지하며 w3wp.exe 대부분을 차지하고 있습니다. 일반적인 시나리오는 w3wp.exe는 60 %, SQL Server는 약 30 %입니다. 우리 DB도 꽤 작습니다.

자세한 설명 및 자세한 내용 :

  • 이 사이트는 Cari.Net에 의해 매우 거친 서버에 호스팅됩니다. 처음부터 서버가 제대로 작동하지 않는다는 느낌이 들었습니다. 일부 작업은 너무 오래 걸리므로 구성에 문제가있을 수 있습니다. 또한 서버가 상당히 느린 경향이 있다는 점을 제외하고는 가상 서버가 전용 서버를 보유하고있는 동안 가상 서버를 얻는 것일 수도 있습니다.

  • 서버는 SQL 2008 Express가 포함 된 Windows 2008 Standard 64 비트입니다.

  • 하드웨어는 Celeron 2.80 GHz, 1Gb RAM입니다

  • 이 웹 사이트는 데이터 액세스를 위해 Entity Framework를 사용하여 ASP.Net MVC로 개발되었습니다.

  • 자, 이것은 꽤 엉뚱한 하드웨어이지만, 이와 같은 (또는 더 나쁜) HW를 가진 이들 서버를 가진 다른 서버를 가지고 있으며, 이것보다 성능이 훨씬 좋습니다. 즉, 다른 서버에는 W2003 및 SQL2005가 있으며 ASP.Net “WebForms”2.0, MVC, LINQ, EF 없음을 사용하고 있습니다. 2008 년에 갈지 여부 / 다른 것들이 큰 성능 저하가 예상되는지 여부는 확실하지 않습니다.

  • MP3 파일 (5-20 Mb)을 정기적으로 제공하고 있는데, 이는 약간 특이한로드이며, 이는 어떤 종류의 문제를 일으킬 수 있습니까?
    이것이 w3wp가 많은 CPU를 사용하게합니까?

  • 디스크 사용량이 매우 낮은 것 같습니다. 메모리는 일반적으로 약 90 %이지만 디스크 사용량은 페이징이 많지 않은 것으로 보입니다.

  • 내가 얻을 t 우리의 모든 쿼리가 매우 간단 있지만 30 초 이상 복용 쿼리, SQL 시간 제한에 대해 매일 전자 우편의을 (또는해야하지만, EF 그것을 망쳐 할 수있다).

이것은 유용한 정보가있는 경우를 대비하여 100 % CPU의 “스프린트”중 하나에서 리소스 모니터의 모양입니다.

대체 텍스트

그리고 일부 성능 카운터의 스냅 샷 :
대체 텍스트

이제 나를 혼란스럽게하는 것은 w3wp의 CPU 사용량이 너무 높다는 것입니다. 그렇게 많이해서는 안됩니다 … 그래서 내 질문은 …

  • 그것이 무엇을하고 있는지 알아내는 방법이 있습니까? 어쩌면 프로필을 작성 하시겠습니까?
  • 보고있는 성능 카운터가 있습니까?
  • 이 하드웨어 / 소프트웨어 구성이 주어질 것으로 예상됩니까?
  • 이것은 일종의 구성 실패로 인한 것일 수 있습니다. 어디에서 시작 하시겠습니까?

대단히 감사합니다.
다니엘 마 글리 오라



답변

IIS 관리자에서 작업자 프로세스 UI를 사용하여 현재 실행중인 요청을 검사하고 요청이있는 위치에서 중단되는 부분을 확인할 수 있습니다. IIS 관리자-> 트리에서 서버 클릭-> 작업자 프로세스 더블 클릭 아이콘-> CPU를 소비하는 작업자 프로세스를 두 번 클릭하여 현재 실행중인 요청을 실시간으로 확인하여 어떤 모듈이 시간이 걸리는지 볼 수 있습니다.

또한 요청 당 시간의 일부를 추적하여 요청이 오래 걸리는 위치를 확인하려면 실패한 요청 추적을 사용하십시오.


답변

좋아, 시작하려면 서버가 정말 엉망입니다. 그러나 충분해야합니다.

  • 가상화를 위해 드라이버를 확인하십시오. 나는 CPU를 숨기는 가상화 플랫폼이 없다는 것을 알고 있습니다 (그리고 누군가가 셀러론에 hyper-v 또는 esx를 넣는 것을 용인합니다). 그러나 디스크 등의 드라이버는 표시입니다.

  • CPU가 그렇게 높으면 안됩니다. 슬프게도,이 RAM을 사용하면 토스트가 거의 발생합니다. 프로파일 러를 추가하기 시작하면 메모리가 거의 날려 버릴 것입니다.

나는 :

  • 이 시점에서 실행중인 항목에 대한 로그를 확인하십시오.
  • OS를 2008 R2로 업그레이드하십시오. 자세한 정보가 여기에 있습니다.

시험용:

  • 개발 환경에서 사이트를 복사하고 성능 테스트를 실행하십시오.
  • 거기서 프로파일 링하십시오.
  • 실패한 요청 추적을 사용하여 실패한 요청을 찾으십시오.

http://learn.iis.net/page.aspx/266/troubleshooting-failed-requests-using-tracing-in-iis-7/

거기에 약간의 시작이 있습니다. 문제가 더 많은 경우에 대비하여 힌트를 줄 수 있습니다.

또한 장기적인 성능 로그를 유지합니다. IO를 조심하십시오 (초 / 읽기, 초 / 쓰기는 거의 관련이 있습니다). 나머지는 모두 IO 현명한 것이 모호하지만 IO가 예상보다 오래 걸리면 디스크가 뒤떨어집니다.

이 시점에서 최소한 기본 표시기로 구성 문제를 배제합니다. 무언가가 W3p 리소스를 소모하므로 이제 무엇인지 알아 내야합니다.

일반적으로 이것은 물리적으로 사용하고 싶은 서버가 아닙니다. 너무 작아서 기계를 가지고 있다는 것은 의미가 없습니다. 가상이 더 나을 것이다;)


답변

Process Explorer 라는 프로그램을 사용 하여 w3wp 프로세스에서 실행중인 개별 스레드를 모니터 할 수 있습니다. 어떤 스레드가 모든 손상을 일으키는 지 확인할 수 있어야합니다.


답변

Microsoft의 디버그 진단 도구를 사용하여 w3wp 프로세스를 덤프 한 다음 스레드 및 스택 추적을 확인하여 잠긴 것들을 확인했습니다. 심지어 SUPER nice 인 스레드를 생성 한 요청 페이지를 알려줍니다 .

http://www.microsoft.com/en-us/download/details.aspx?id=26798


답변

나는이 시점에서 특히 Virtual에서 더 나은 마일리지를 얻는 것에 대해 TomTom에 동의합니다. 문제를 좁히기 위해 로컬에서 디버깅 / 프로파일 링하는 것이 옳은 일입니다.

Karnak The Magnificent 모자와 망토를 쓰고 첫 번째 봉투를 요구할 것입니다. 램 반란. OS, ASP.NET 및 욕심 많은 SQL Server Express를 1GB에 넣으면 무엇을 얻을 수 있습니까?

귀하의 문제는 SQL Server Express가 버퍼 풀에 사용 가능한 모든 RAM을 가져 와서 느리게 릴리스한다는 것입니다. 자세한 내용은 http://support.microsoft.com/kb/321363 을 참조하십시오. 또한 IIS에는 기본 캐시가 256MB이며 조정해야 할 수도 있습니다 ( https://stackoverflow.com/questions/2853135/controlling-asp-net-output-cache-memory-usage ). 디버그 진단 은이 문제를 해결하는 데 유용한 도구입니다 (아마도 망치).

http://technet.microsoft.com/en-us/library/bb742546.aspx 는 꽤 괜찮은 기사입니다. http://social.technet.microsoft.com/forums/en-US/sharepointadmin/thread/706c653a-16b0-4696-85ee-9ae3552a582e 는 또 다른 가능한 문제로 앱 풀 재활용이 사라 졌다고 지적합니다.


답변

Perfmon의 “프로세스”카운터를 사용하여 w3wp.exe 프로세스의 개별 속성을보십시오. 작업자 프로세스의 CPU 시간은 커널 시간입니까? 커널 시간이 높으면 페이징을 나타낼 수 있지만 확신이 없다고합니다. 다른 가능성은 더프 드라이버입니다. 작업자 프로세스에는 23 개의 스레드가 활성화되어 있지만 어떤 작업을 수행하고 있습니까? SysInternals의 ProcessExplorer를 사용해보십시오. 또한 사용중인 TCP / IP 연결을 확인할 수 있습니다. SQL Express를 사용하지는 않았지만 빅 브라더와 같은 메모리 튜닝 매개 변수가 있습니다. SQL이 IIS의 메모리를 고갈시켜 과도한 페이징을 유발합니까?


답변

완전히 관련이 없지만 쿼리에서 NOLOCK을 사용하고 있는지 확인하십시오. SQL 시간 종료의 경우 도움이 될 수 있습니다.