64位IIS上的多个32位进程 – 内存限制?

我有一个传统的ASP Web应用程序使用VB6 DLL。 该应用程序是相当饥饿的内存。 我需要在一台机器上运行应用程序的多个实例。 现在因为VB6 DLL只有32位,运行在一个64位进程已经结束 – 但是如果我运行多个32位IIS应用程序池呢? 在每个应用程序池中,每个脚本的内存限制是1.2GB,还是由所有应用程序池进程的内存限制聚合? 任何有经验的人?

但是如果我运行多个32位IIS应用程序池呢? 在每个应用程序池中,每个脚本的内存限制是1.2GB,还是由所有应用程序池进程的内存限制聚合?

每个进程限制适用于每个进程,并且每个应用程序池都在其自己的进程中。 所以你可以通过运行大量的应用程序池来使用任意大量的内存。

另外,它不是1.2GB,而是4GB。

默认情况下,一个32位进程获得2GB的“用户空间”,除非这个exe是用“Large Address Aware”标志构build的,在这种情况下,它在一个32位的操作系统上获得3GB的适当的启动时间标志(这限制了内核空间它自己的后果),但在64位操作系统,它是4GB用户空间(不需要启动标志,并没有内核内存的后果)。

可以从%SystemRoot%\SysWow64\inetsrv文件夹中的运行dumpbin /headers w3wp.exe中看到,32位w3wp.exe (承载应用程序池的可执行文件)使用Large Address Aware标志构build。