我在IIS上运行的ASP.NET 4.0应用程序在 Windows Server 2012 下托管,总物理内存为8 GB。
我注意到,当用户登录应用程序并执行任务时, IIS工作进程大小正在显着增加。
我真的迷失了如何设置此应用程序以避免内存中断或应用程序崩溃。
我的问题是, IIS工作进程在具有8GB RAM的 Windows Server 2012 上可以达到的最大大小是多少?
您是否建议我以 32位模式或 64位模式运行应用程序池?
您是否建议我使用 Web园艺(增加IIS工作进程的数量)?使用此选项有什么副作用?
答案 0 :(得分:4)
问题相当广泛,但我认为可以部分回答。
可能的内存泄漏 - 如果w3wp进程内存(提交大小或内存)继续上升,即使用户数不再增加,也可能会泄漏内存。查看this question了解详情
应用程序池内存限制 - 可以为每个应用程序池配置工作进程的最大允许内存 - >回收条件 - >基于记忆的最大值。达到此内存限制时,应用程序池将被回收(发送关闭事件并在关闭限制后执行实际关闭(默认为90秒))
没有应用程序池内存限制 - 在这种情况下,我认为限制将取决于.NET进程可以在特定体系结构上分配多少内存。使用来自here的信息,在您的特定情况下,内存限制应<<>> RAM + Pagefile 的70%。
但是,如果内存使用率很高,您还应该考虑以下因素:
HostingEnvironment
值是由于内存而回收应用程序池时的原因最大范围。检查this answer以了解如何连接应用程序中的内容以捕获应用程序池关闭启动。