it-swarm-ko.tech

IIS6 웹 사이트 / 앱 풀이 사용할 수있는 최대 메모리는 얼마입니까?

Windows 2003 SP2 x86에서 실행되는 IIS 6 서버가 있습니다. 서버에는 4GB의 RAM)가 있으며 2GB가 할당 된 상태로 일관되게 실행됩니다.

X86을 사용하면 서버가 4GB RAM 및 응용 프로그램 공간도 제한되어 있지만 IIS 프로세스가 제한되는 것 같습니다. w3wp.exe에는 할당 된 500MB 이상이 없으며 바쁜 .NET 응용 프로그램에서 가끔 OutOfMemory 예외가 발생합니다 (각각 별도의 응용 프로그램 풀이있는 여러 응용 프로그램이 실행 중입니다).

IIS6 웹 사이트/앱 풀이 사용할 수있는 최대 메모리는 얼마입니까?

8
Robin M

Windows x86의 앱은 2GB/ea로 제한됩니다./3gb 플래그를 boot.ini에 추가하여이를 변경할 수 있지만 이로 인해 예기치 않은 응용 프로그램 동작이 발생할 수 있으므로주의해서 사용해야합니다. MS는 공식적으로 이것을 지원하지 않습니다 ( http://technet.Microsoft.com/en-us/library/bb124810.aspx )

IIS의 메모리 제한은 관련 앱 풀의 재활용 탭에서 설정할 수 있습니다.

애플리케이션이 500MB를 넘지 않는다는 것을 어떻게 결정하고 있습니까? 작업 관리자를 사용하는 경우 Windows에서 이해하는 것처럼 메모리 사용량을 정확하게 표현하는 경우는 드뭅니다. 프로세스 탐색기 사용 : http://technet.Microsoft.com/en-us/sysinternals/bb896653.aspx

다른 관련 질문이 많이 있습니다.

  • 이벤트 로그에 오류가 기록되어 있습니까?
  • 예외를 던지는 특정 코드 줄입니까? 그렇다면이 OutOfMemory 예외는 실제로 IIS 문제입니까, 아니면 코드 문제입니까?
  • 재활용 설정으로 응용 프로그램 풀을 제한하고 있습니까?
  • 이 컴퓨터에서 실행중인 다른 서비스가 있습니까?

대부분의 경우 IIS, ASP.NET 및 모든 관련 수하물은 Windows 작업 관리자에 표시되지 않더라도 2GB 제한을 초과하여 실행됩니다. 재활용 제한을 설정하거나 x64로 업그레이드하면 큰 차이가있을 것입니다.

7
sh-beta

가끔 바쁜 .NET 응용 프로그램에서 OutOfMemory 예외가 발생합니다.

이에 대한 답은 너무 복잡해서 답에 맞지 않습니다. 주제에 대한 완전한 처리는 " Tuning .NET Application Performance "를 참조하십시오.

다음은 Bruno Jouhier 에서 엄청나게 단순화 된 (하지만 여전히 꽤 좋은) 요약입니다.

또한 .NET 런타임은 최대 2GB까지 허용하지 않습니다. 가비지 수집기는 라이브 개체를 복사하는 방식으로 작동하므로 복사를 수행하려면 상당한 공간이 필요합니다.

편집하다:

여기에 대한 설명이 있습니다 ...

X86에서 ASP.NET 작업자 프로세스의 최대 작업자 프로세스 메모리 크기 (작업 관리자에서보고 됨)가 무엇인지 궁금하다면 대답은 "에 따라 다릅니다".

Java 또는 .NET과 같은 모든 종류의 관리 코드에서 프로그래머는 포인터를 처리 할 필요가 없다는 이유로 메모리에 대한 세밀한 제어를 포기합니다. 프로그램이 실행됨에 따라 힙은 스택은 Garbage Collector 에 의해 주기적으로 정리됩니다.

특히 ASP.NET과 관련하여 가비지 수집기는 웹 사이트와 동일한 작업자 프로세스 내에서 실행됩니다. GC는 자체 메모리를 사용합니다. 어떻게 much 메모리는 전적으로 애플리케이션 코드 작성 방식의 함수입니다. 한 앱은 1.8GB의 메모리를 사용할 수 있고 다른 앱은 500MB에서 질식 할 수 있습니다. why를 이해하려면 특정 애플리케이션을 프로파일 링해야합니다.

3
Portman

X86 Windows OS의 모든 프로세스는 boot.ini 파일에/3gb 스위치를 설정하지 않는 한 2GB로 제한됩니다.이 경우 프로세스는 3GB를 사용할 수 있습니다.

2
Steve Evans

앱 풀에서 가상 메모리 크기를 설정하지 않았는지 확인하십시오. 이 값을 허용 범위를 벗어난 숫자로 설정하면 512MB로 되돌아갑니다. KB923197 를 참조하십시오.

또한 ASP.Net 응용 프로그램을 실행하는 경우 ASP.Net은 2GB 메모리 제한의 60 % 또는 1.2GB에서 풀을 재활용합니다. 이것은 500 개 이하의 시나리오가 아니지만, 메모리 사용량이 큰 32 비트 앱 풀에서는 때때로 약간의 메모리를 확보하기 위해이 주를 수행합니다.

<system.web> 
  <processModel memoryLimit="80" />
</system.web> 
2

이 블로그 게시물에서 "SharePoint 응용 프로그램 풀 설정에 대한 권장 사항" :

물리적 인 것에 초점을 맞추면 일반적으로 메모리 수와 양에 따라 앱 풀이 거의없는 32 비트 앱에서 앱 풀을 최대 800MB에서 최대 1200MB로 제한하고 싶습니다. 2GB 서버에서 RAM 최대 800MB로 설정했습니다. 4GB RAM 서버에서 최대 1GB 이상이면 더 많음) 약 1200. 8-16GB 메모리가있는 64 비트 웹 프런트 엔드에서 2GB의 RAM 설정 또는 제한하는 대신 타도록 허용하는 경우)에 대해 들었습니다.

실제로 처리하고 캐시 할 수 있으므로 프로필을 작성해야합니다. 메모리 양이 많고 부하가 클수록 작업자 프로세스가 커집니다. 사람들이 앱 풀 구성에 대해 질문 할 때 일반적으로 여기에서 숫자가 무엇인지 묻습니다. 여기서하는 일은 앱 풀이 더 많은 메모리를 사용하지 못하도록 명시 적으로 제한하는 것입니다. 이 설정은 재활용 탭에 있으며 그에 대한 이유가 있습니다.

앱 풀이 최대 값에 도달하면 최대 프로세서 설정과 같지 않습니다. 작은 재부팅이나 iisreset과 유사한 작업자 프로세스를 순환하지만 때로는 메모리를 해제 할 수 있도록 이러한 작업이 발생하기를 원하기 때문에 그렇지 않습니다. 이상적인 세상에서 24 시간에 두 번 이상주기를 원하지는 않습니다. 오전 피크가 발생하기 직전에 사용 가능한 메모리 양을 최대한 확보 한 다음 백업 또는 크롤링이 시작되기 전 하루가 끝날 때 바로주기를 시도한다고 들었습니다.

내 경험상 800MB 는 32 비트 머신 (2-4GB RAM)의 한계입니다. "메모리 부족"예외가 발생하기 전에 앱 풀을 재활용합니다.

2
splattne

Windows 2003에서는 Physical Allocation Extension (PAE)를 설정하여 모든 메모리를 사용할 수 있습니다. IIS6 앱 풀의 기본 메모리는 5MB 입니다.

1
user1797