w3wp.exe가 메모리를 비웃음 20 개의 ASP.NET

Small Business Server 2011 설치에서 많은 수의 w3wp.exe 프로세스가 많은 양의 메모리를 사용하는 것으로 보입니다. SBS 기본 제공 설치에는 총 7 개의 사이트와 20 개의 ASP.NET 응용 프로그램 풀 (SharePoint, Exchange, WSUS 및 Remote Web Workplace와 같은 SBS 관련 항목)이 제공됩니다.

결과적으로 수십 개의 w3wp.exe 프로세스는 시간이 지남에 따라 4GB 이상의 서버 메모리를 사용하는 경향이 있습니다. 최대 응용 프로그램 풀은 작업 세트에서 약 800MB의 WSUS에 속하는 풀입니다. IIS MMC를 통해 응용 프로그램 풀을 수동으로 재활용하면 일시적으로 메모리 사용을 줄일 수 있습니다 (w3wp.exe 프로세스는 10MB로 축소되고 일부는 빠르게 커짐). 그러나 관리자가 하루 종일하고 싶은 것은 아닙니다. SBS가 사전 설치된 응용 프로그램 풀의 자동 재활용에 대한 권장 사항을 찾지 못했기 때문에 프로덕션 시스템에서 “그냥 해”하는 것을 꺼려했습니다.

이것을 제한하는 방법에 대한 나의 그물에 대한 연구는 w3wp 메모리 소비가 아프지 않지만 메모리가 “다른 응용 프로그램에서 필요할 때 해제 될 것”이므로 성능에 이익이된다는 많은 게시물을 던져 넣었습니다. 문제는 그것이 작동하지 않는다는 것입니다.

  • 하나의 경우, SBS는 다중 역할 서버이며, 역할 중 하나 (주요 서버)는 CIFS 네트워크 스토리지 역할을하는 “파일 시스템 캐싱의 이점”으로, “다른 프로세스에서 다른 프로세스에서 사용하지 않는”여유 메모리에 다시 의존합니다. way “-사용자를 거의 보지 않고 메모리를 사용하지 않는 ASP.NET 응용 프로그램 풀은 비생산적입니다.
  • 또 다른 것은 메모리 부족시 w3wp 인스턴스 메모리 소비가 여전히 크게 감소해야한다는 것입니다.

IIS 나 ASP.NET 응용 프로그램을 관리하는 경우는 거의 없으므로 응용 프로그램 풀의 메모리 요구 사항을 효과적으로 정리하는 방법에 대한 아이디어는 언제든지 환영합니다.



답변

SBS의 놀라운 세계에 오신 것을 환영합니다. RAM의 권장 요구 사항은 10GB이며 최소 8GB가 필요합니다. ( Microsoft에 따르면 ) 타당한 이유가 있습니다. 잘 정돈 된 기름칠 된 기계가 아닙니다. 매우 조잡하고 부풀어 오며 태양 아래 모든 것이 묶여 있습니다. 그 상자에 RAM을 더 많이 넣을수록 더 좋습니다. 불행히도 최대 32GB로 제한됩니다. 어느 imho … 바보입니다.


답변

이것이 내가 한 일입니다.

이 답변 에서 제안한대로 web.configat에서 privateBytesLimit 매개 변수를 설정하여 .NET AppPools의 서버 응용 프로그램 캐시를 낮은 값 (5MB)으로 설정합니다 .%WINDIR%\Microsoft.NET\Framework\<version>\Config

    <configuration>
      <system.web>
         <caching>
           <cache privateBytesLimit="5242880" privateBytesPollTime="00:01:00" />
         </caching>
      </system.web>
    </configuration>

이는 기본 풀 재활용 설정으로 메모리 사용량을 1GB 이상으로 줄였습니다.

“서버”유형의 가비지 수집기 ( <gcServer = "true">) 를 사용하면 상당한 메모리 소비가 발생할 수 있지만 <gcServer>기본적으로 false로 설정되어 있습니다.


답변

소프트웨어 결함으로 인해 결과 메모리 소비가 문제라고 생각되면 Microsoft DebugDiag 1.2를 사용하여 전체 메모리 덤프를 작성하고 일반적인 문제에 대한 덤프를 분석 할 수 있습니다. 메모리 문제가 있다고 생각되면 “누설 모니터링”옵션을 선택하여 누출 추적을 활성화하고 덤프를 생성 / 분석하기 전에 잠시 동안 실행되도록해야합니다.

DebugDiag 1.2 다운로드
https://www.microsoft.com/download/en/details.aspx?id=26798

여기에 이미지 설명을 입력하십시오

여기에 이미지 설명을 입력하십시오

여기에 이미지 설명을 입력하십시오


답변

모든 앱에 대해 별도의 앱 풀이 필요하지 않으며 신뢰할 수 없거나 우선 순위를 지정하려는 앱 풀만 필요합니다. 많은 사람들이 공유 할 수 있습니다 (서로 다른 .net 버전을 별도로 유지). 그런 다음 앱 풀에서 사용할 메모리를보다 현실적으로 제한 할 수 있습니다. 하루에 한 번 이상 풀을 반복해서 재활용 할 필요가 없습니다.

또한 이런 방식으로 해제 할 수있는 메모리가 너무 많습니다. 일부는 캐시이지만 각 앱에는 특정 웹 앱에 크게 의존하는 일정한 양의 작업 메모리가 필요합니다. 이것을 너무 많이 제한하려고 시도하면 분쇄가 중단됩니다.

문제는 실제로 SBS가 한 번에 너무 많은 일을 시도한다는 것입니다. 실제로 사용하는 것을보고 사용하지 않는 것을 차단해야합니다.

그러나 11 명의 사용자에게 정직하기 위해 나머지 메모리는 어디로 갈까요? 가벼운 사용을위한 Exchange 및 SQL은 확실히 12Gb 이상이 필요 하지 않습니다 !


답변