C# 什么是好的价值观;“专用内存限制”;及;“虚拟内存限制”;在承载32位ASP.NET应用程序的IIS应用程序池中?

C# 什么是好的价值观;“专用内存限制”;及;“虚拟内存限制”;在承载32位ASP.NET应用程序的IIS应用程序池中?,c#,asp.net,iis,out-of-memory,application-pool,C#,Asp.net,Iis,Out Of Memory,Application Pool,我们最近有一个ASP.NET web应用程序(在32位应用程序池中运行),多年来一直运行良好,没有出现问题,它的日志中充满了OutOfMemoryExceptions。回收应用程序池修复了这个问题 我知道正确的长期解决办法是 查找、识别并修复任何内存泄漏,以及 如果需要,将应用程序迁移到64位并提供更多内存 在这之前,我想至少保持服务可用。幸运的是,IIS中的应用程序池方便地允许我配置“私有内存限制(KB)”和“虚拟内存限制(KB)”,一旦达到这些限制,就会自动回收应用程序池 我想将这些选项

我们最近有一个ASP.NET web应用程序(在32位应用程序池中运行),多年来一直运行良好,没有出现问题,它的日志中充满了OutOfMemoryExceptions。回收应用程序池修复了这个问题

我知道正确的长期解决办法是

  • 查找、识别并修复任何内存泄漏,以及
  • 如果需要,将应用程序迁移到64位并提供更多内存
在这之前,我想至少保持服务可用。幸运的是,IIS中的应用程序池方便地允许我配置“私有内存限制(KB)”和“虚拟内存限制(KB)”,一旦达到这些限制,就会自动回收应用程序池

我想将这些选项设置为

  • 尽可能高,以避免不必要的应用程序池回收操作,但
  • 尽可能低以防止OutOfMemory异常

由于32位应用程序最多可以使用2GB的虚拟内存,我想。。。只需将两个选项都设置为略低于2GB?它真的那么简单,还是我遗漏了什么?

对于IIS w3wp.exe,它在64位操作系统中最多可以使用4GB内存。但我建议在设置任何值之前监视您的系统。当垃圾回收器接近内存使用限制时,它将更积极地运行。这可能会导致CPU利用率过高。@Eldar:谢谢,这解释了为什么此工作进程的虚拟内存当前超过2 GB(这让我非常困惑)。ASP.NET web应用程序不应超过大约1.3 GB(您可以查看类似的帖子)。对于IIS w3wp.exe,它在64位操作系统中最多可以使用4GB内存。但我建议在设置任何值之前监视您的系统。当垃圾回收器接近内存使用限制时,它将更积极地运行。这可能会导致CPU利用率过高。@Eldar:谢谢,这解释了为什么此工作进程的虚拟内存当前超过2 GB(这让我非常困惑)。ASP.NET web应用程序不应超过大约1.3 GB(您可以检查类似的帖子)。