在64位操作系统上使用Web Garden的32位应用程序的IIS6可用内存(32Gb Ram)

问题描述:

我们的IIS6在具有32Gb物理RAM的64位Windows 2003服务器上运行。 由于我们的.NET 3.5 ASP.NET应用程序中存在一些较老的32位依赖项,我们目前被迫以32位wow64模式运行我们的IIS工作进程,据我了解,我们可以访问我们工作进程的4Gb内存。在64位操作系统上使用Web Garden的32位应用程序的IIS6可用内存(32Gb Ram)

我的问题是,如果我们使用Web Garden设置并配置4个工作进程,每个工作进程可以访问每个内存4Gb,从而使我们可以访问大约16Gb的内存。还是我们坚持4Gb的出局ASP.NET应用程序的限制?

是的,每个进程的限制是4GB。在64位内核上运行的每个32位进程都具有4GB的专用地址空间限制(顺便说一下,不像32位系统那样与内核共享)。您可以访问4x4GB = 16GB的内存,但是,这个16GB不能同时用于单个进程。每个人只能直接访问自己的4GB私人内存。您应该使用一些进程间通信介质来访问其他进程的内存。

+0

我们管理会话进程外的,所以有机会获得的内存4x4Gb将帮助我们大大并且很可能不需要任何应用程序体系结构的变化。谢谢 – 2008-12-14 10:11:02

上面的答案是“每个工作进程访问每个内存4Gb” - 默认情况下,除非使用/ 3GB开关,否则在用户模式下将有2GB内存,您可能会也可能无法使用取决于您的应用程序/服务器设置的要求。您可以结束饥饿的内核模式资源。

你的问题的第二部分“因此给我们访问大约16Gb的内存”取决于你的意思是“访问”。 Web花园通过为传入请求旋转另一个w3wp.exe来工作,直到达到为应用程序池设置的工作进程数量。由于每个web garden实例都在自己的进程中,就好像它是一个不同的应用程序池,因此它们不共享相同的地址空间。所以,当您的应用程序占用更多内存时,仅仅是因为您正在运行同一应用程序的多个实例,每个实例都受到32位限制。 http://bytes.com/groups/asp/54826-asp-sessions-web-gardens http://msdn.microsoft.com/en-us/library/ms791558.aspx