X64 OS (32GB RAM)의 웹 정원이있는 32 비트 응용 프로그램에 대한 IIS6 사용 가능한 메모리
-
21-08-2019 - |
문제
32GB 물리적 RAM이있는 64 비트 Windows 2003 서버에서 IIS6을 실행하고 있습니다. .NET 3.5 ASP.NET 애플리케이션 내의 이전 32 비트 종속성으로 인해 현재 32 비트 WOW64 모드에서 IIS 작업자 프로세스를 실행해야합니다.
내 질문은 웹 정원 설정을 사용하고 4 개의 작업자 프로세스를 구성하는 경우 각 작업자가 각각 4GB의 메모리에 액세스 할 수 있으므로 약 16GB의 메모리에 액세스 할 수 있습니다. 아니면 Out ASP.NET 앱에 대한 4GB 제한을 고수합니까?
해결책
예, 4GB 제한은 프로세스 당입니다. 64 비트 커널에서 실행되는 각 32 비트 프로세스에는 4GB 개인 주소 공간 한계가 있습니다 (이는 32 비트 시스템에서와 같이 커널과 공유되지 않음). 4x4GB = 16GB 메모리에 액세스 할 수 있지만이 16GB는 단일 프로세스에서 한 번에 사용할 수 없습니다. 각각은 자체 4GB 개인 메모리 만 직접 액세스 할 수 있습니다. 다른 프로세스에서 메모리에 액세스하기 위해 일부 간략한 통신 매체를 사용해야합니다.
다른 팁
"각 작업자 프로세스 액세스 4GB 각각의 메모리"에 대한 답변은 위에서 답변되었습니다. 기본적으로 /3GB 스위치를 사용하지 않는 한 2GB의 RAM이 사용자 모드에 있습니다. 요구 사항에 따라 사용할 수 있거나 사용할 수 없을 수도 있습니다. 앱/서버 설정 굶주린 커널 모드 리소스를 가동 할 수 있습니다.
귀하의 질문의 2 부 "따라서"약 16GB의 메모리에 대한 액세스 권한을 부여합니다 "는"Access "의 의미에 따라 다릅니다. 웹 정원은 앱 풀에 대한 작업자 프로세스 수에 도달 할 때까지 들어오는 요청에 대해 또 다른 W3WP.Exe를 회전시켜 작동합니다. 각 웹 가든 인스턴스는 자체 프로세스에 있기 때문에 마치 다른 앱 풀인 것처럼 동일한 주소 공간을 공유하지 않습니다. 따라서 애플리케이션이 더 많은 메모리를 소비하는 반면, 동일한 응용 프로그램의 여러 인스턴스를 실행하고 있기 때문에 각각 32bit 제한으로 제한되기 때문입니다.http://bytes.com/groups/asp/54826-asp-sessions-web-gardens http://msdn.microsoft.com/en-us/library/ms791558.aspx