Windows Server 2012内存限制上的IIS工作进程

时间:2015-05-08 16:20:34

标签: c# asp.net iis

我在IIS上运行的ASP.NET 4.0应用程序在 Windows Server 2012 下托管,总物理内存为8 GB。

我注意到,当用户登录应用程序并执行任务时, IIS工作进程大小正在显着增加。

我真的迷失了如何设置此应用程序以避免内存中断或应用程序崩溃。

我的问题是, IIS工作进程在具有8GB RAM的 Windows Server 2012 上可以达到的最大大小是多少?

您是否建议我以 32位模式或 64位模式运行应用程序池?

您是否建议我使用 Web园艺(增加IIS工作进程的数量)?使用此选项有什么副作用?

1 个答案:

答案 0 :(得分:4)

问题相当广泛,但我认为可以部分回答。

  1. 可能的内存泄漏 - 如果w3wp进程内存(提交大小或内存)继续上升,即使用户数不再增加,也可能会泄漏内存。查看this question了解详情

  2. 应用程序池内存限制 - 可以为每个应用程序池配置工作进程的最大允许内存 - >回收条件 - >基于记忆的最大值。达到此内存限制时,应用程序池将被回收(发送关闭事件并在关闭限制后执行实际关闭(默认为90秒))

  3. 没有应用程序池内存限制 - 在这种情况下,我认为限制将取决于.NET进程可以在特定体系结构上分配多少内存。使用来自here的信息,在您的特定情况下,内存限制应<<>> RAM + Pagefile 的70%。

  4. 但是,如果内存使用率很高,您还应该考虑以下因素:

    • 垃圾收集 - 当内存使用率相当高且GC介入时,拼命回收内存时,应用程序性能可能会降低很多
    • 内存消耗并发 - 如果您有其他需要大量内存的进程(例如Reporting Server),则应考虑明确设置应用程序池的内存上限
    • 如何检查应用程序池是否因内存限制而关闭 - 不完全确定,但我认为HostingEnvironment值是由于内存而回收应用程序池时的原因最大范围。检查this answer以了解如何连接应用程序中的内容以捕获应用程序池关闭启动。