windows Enterprise Server 上的 IIS 6.0 - 内存限制
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/124118/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
IIS 6.0 on Enterprise Server - Memory Limit
提问by pgb
We want to switch a web server from Windows 2003 to Windows 2003 Enterprise (64 bits) to use 8GB of RAM. Will IIS 6.0 and an ASPNET 1.1 application be able to benefit from the change?
我们希望将 Web 服务器从 Windows 2003 切换到 Windows 2003 Enterprise(64 位)以使用 8GB 的 RAM。IIS 6.0 和 ASPNET 1.1 应用程序能否从这一变化中受益?
回答by Christopher G. Lewis
Since ASP.Net 1.1 has no x64 support, you are limited to running IIS 6 using 32 bit worker processes. The /3GB switch doesn't do anything on x64, but x64 natively gives 32bit processes 4 GB instead of 2GB, so you will have more memory available for your worker proces.
由于 ASP.Net 1.1 不支持 x64,因此您只能使用 32 位工作进程运行 IIS 6。/3GB 开关在 x64 上不执行任何操作,但 x64 本身为 32 位进程提供 4 GB 而不是 2 GB,因此您将有更多内存可用于您的工作进程。
You will need to set the AppPools to 32 bit:
您需要将 AppPools 设置为 32 位:
cscript %SystemDrive%\inetpub\AdminScripts\adsutil.vbs set w3svc/AppPools/Enable32bitAppOnWin64 1
You could consider tweaking the ASP.net memory from 60% of the application to 80%, which we've had some success.
您可以考虑将 ASP.net 内存从应用程序的 60% 调整到 80%,我们已经取得了一些成功。
<system.web>
<processModel memoryLimit="80" />
</system.web>
This can stress the app pool when you get up into the 1.2GB to 1.6 GB range.
当您达到 1.2GB 到 1.6GB 的范围时,这会给应用程序池带来压力。
Other things to consider is that most ASP.Net 1.1 applications have no issues when run in a 2.0 application pool, allowing you to easily convert your 1.1 32 bit application to a 2.0 64 bit application. This doesn't require any recompilation, just change the app pool to 2.0, then switch to x64 using the above ADSUTIL.VBS script (set to 0 rather than 1).
其他需要考虑的事情是大多数 ASP.Net 1.1 应用程序在 2.0 应用程序池中运行时没有问题,允许您轻松地将 1.1 32 位应用程序转换为 2.0 64 位应用程序。这不需要任何重新编译,只需将应用程序池更改为 2.0,然后使用上述 ADSUTIL.VBS 脚本(设置为 0 而不是 1)切换到 x64。
回答by Pseudo Masochist
My understanding is that there was a virtual address space limitation of 3 GB in ASP.NET 1.1, and that it was never made 64 bit compatible, though 2.0 was.
我的理解是 ASP.NET 1.1 中存在 3 GB 的虚拟地址空间限制,并且它从未兼容 64 位,尽管 2.0 是。
You can get IIS 6.0 to run 32 bit (i.e. ASP.NET 1.1) on the 64 OS, but it will be in a 32 bit mode (along with anything else hosted, including ASP.NET 2.0 sites).
您可以让 IIS 6.0 在 64 位操作系统上运行 32 位(即 ASP.NET 1.1),但它将处于 32 位模式(以及托管的任何其他内容,包括 ASP.NET 2.0 站点)。
回答by crackity_jones
The memory limit is 2GB unless you use the /3GB switch on the process which will use 1GB of the kernel space for the process itself. The only way to go beyond 3GB with IIS is to run the 64-bit version.
内存限制为 2GB,除非您在进程上使用 /3GB 开关,这将为进程本身使用 1GB 的内核空间。使用 IIS 超过 3GB 的唯一方法是运行 64 位版本。