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


17

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

如果我将专用内存限制设置为500MB,将虚拟内存限制设置为3GB。应用程序池何时回收?达到500MB或达到3GB后会回收吗?


您所说的“虚拟内存限制”和“专用内存限制”选项在哪里?
Panic Panic

1
@ColonelPanic在IIS7.5上,它们位于应用程序池的Advanced Settings -> Recycling部分下。
ngm

Answers:


16

IIS将同时遵守这两个限制。

如果您设置了500MB的专用字节数限制,则当工作进程尝试提交501MB时,IIS将启动一个新的工作进程并杀死旧的工作进程。

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

如果您使用的是64位平台,则应注意ASP.NET应用程序会积极保留虚拟内存。例如,我在一个服务器场中有一个应用程序,该应用程序仅使用88MB的专用字节,但现在的虚拟大小为5.4GB。我相信虚拟内存预留是服务器上物理RAM的功能。同样重要的是要了解,在64位平台上,保留虚拟内存的大部分对性能的影响为零。

基本上,如果您在IIS服务器上遇到内存消耗问题,则要限制的设置是“专用内存/字节数”,这与实际的内存使用量相对应。


感谢Dominic,有没有一种方法可以设置一个使用500Mb专用内存的过程,一旦超过该限制,就可以开始使用磁盘上的虚拟内存而不进行回收?
kishore

2
不是我知道的。在ASP.NET应用程序中,一旦开始出现提交字节问题,基本上就可以使用3个选项。1.达到限制时或在非工作时间每晚进行循环处理(显然不建议这样做,如果在使用窗口中进行循环使用,别忘了正确管理会话数据)2.为应用程序获取额外的物理内存(添加RAM)迁移到服务器场或迁移到其他场,这可能是最简单的解决方案,具体取决于您的情况)。3.修改应用程序,使其更有效地使用内存。(最佳选择,但可能难以实施)
Dominic D

我还注意到一些ASP.NET应用程序中对内存的积极保留。有人可以推荐一些很好的资源来学习该主题吗?我想了解更多有关其发生方式和原因的信息……我观察到的是,可用内存越多,应用分配的内存就越多。
汤姆·帕索里克(TomPažourek),
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.