1

我们在具有 32Gb 物理 RAM 的 64 位 Windows 2003 服务器上运行 IIS6。由于我们的 .NET 3.5 ASP.NET 应用程序中存在一些较旧的 32 位依赖项,我们目前被迫在 32 位 wow64 模式下运行我们的 IIS 工作进程,据我所知,这使我们可以访问 4Gb 的内存用于我们的工作进程。

我的问题是,如果我们使用 Web Garden 设置并配置 4 个工作进程,每个工作进程能否分别访问 4Gb 的内存,从而使我们能够访问大约 16Gb 的内存。还是我们被 ASP.NET 应用程序的 4Gb 限制所困扰?

4

2 回答 2

1

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

于 2008-12-14T09:49:39.170 回答
0

上面回答了“每个工作进程每个访问 4Gb 内存”的答案 - 默认情况下,除非您使用 /3GB 开关,否则您将在用户模式下拥有 2GB 的 RAM,您可能会或可能不会根据要求使用该开关您的应用程序/服务器设置。您可能会饿死内核模式资源。

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

于 2008-12-19T19:21:25.687 回答