如何限制 IIS 中应用程序使用的内存?

kis*_*ore 21 iis iis-7 iis-6 virtual-memory memory-leak

IIS 工作进程占用了我们服务器上的大量内存。我想限制每个应用程序可以使用的内存。我很困惑是否应该设置虚拟内存限制或私有内存限制。我们 IIS 中的每个应用程序都位于自己的应用程序池中。

如果我将私有内存限制设置为 500MB,将虚拟内存限制设置为 3GB。应用程序池什么时候回收?达到 500MB 或达到 3GB 后是否回收。

Dom*_*c D 23

IIS 将尊重这两个限制。

如果您设置了 500MB 的专用字节限制,那么只要一个工作进程尝试提交 501MB,IIS 就会启动一个新的工作进程并杀死旧的。

如果您设置了 3GB 的虚拟内存限制,一旦工作进程尝试保留 3.001GB,IIS 将启动一个新的工作进程并杀死旧的。

如果您使用的是 64 位平台,您应该知道 ASP.NET 应用程序会主动保留虚拟内存。例如,我在农场上有一个应用程序,它只使用 88MB 的私有字节,但它现在的虚拟大小为 5.4GB。我相信虚拟内存预留是服务器上物理 RAM 的函数。了解在 64 位平台上保留大部分虚拟内存对性能的影响为零也很重要。

基本上,如果您在 IIS 服务器上遇到内存消耗问题,您要限制的设置是 Private Memory/Bytes,这与实际内存使用量相对应。

  • 不是我所知道的。在 ASP.NET 应用程序中,一旦开始出现提交字节问题,您基本上有 3 个选项。1. 在达到限制时或每晚下班时回收进程(显然不是首选,如果在使用窗口期间回收,请不要忘记正确管理会话数据) 2. 为应用程序获取额外的物理内存(添加 RAM)到服务器场,或移动到不同的场,这可能是最简单的解决方案,具体取决于您的情况)。3. 修改应用程序,使其更有效地使用内存。(最佳选择,但可能难以实施) (2认同)