IIS服务器上的内存不足会导致SQL超时(SQL Server在单独的框中)吗?

Syl*_*ain 6 .net sql-server asp.net iis ado.net

我有一个IIS Web服务器,托管400个Web应用程序(分布在30个应用程序池中).它们都是ASP.NET应用程序和WCF服务端点.服务器有32GB的RAM,通常运行速度很快; 虽然它的内存使用率为95%.工作进程每个需要500MB到1.5GB的RAM.

我还有另一个运行SQL Server的盒子.那个人有充足的自由记忆.

有时,Web Server会开始抛出SQL Timeout异常.一开始每分钟几分钟,迅速增加到每分钟几百分钟; 有效地降低了服务器.此问题会影响所有池中的应用程序.有些请求仍然完成,但大部分请求都没有.发生这种情况时,服务器上的CPU使用率约为30%(这是该盒子上的正常负载).

在发生这种情况时,我们仍然可以使用SQL Server Management Studio(来自IIS服务器)成功(快速)执行请求.

解决方法是重新启动IIS.然后一切都恢复正常,直到下一次.

因为服务器运行时内存非常低,所以我觉得这是原因.但我无法解释低内存和SQL超时异常的突发爆发之间的关系.

任何的想法?

usr*_*usr 7

内存压力可以触发分页和垃圾回收.两者都引入了不会出现的延迟.

GC的32GB数据可能需要几秒钟.为什么所有应用程序会同时处理GC?因为在大约95%的内存利用率下,Windows设置了CLR侦听的" 低内存 "事件.它会尝试释放内存以帮助其他进程.

如果应用程序进入分页狂热,这也可以解释正常执行中的巨大延迟.

不过这只是猜测.您可以通过查看"硬页面错误/秒"计数器来尝试证明它.还必须有"完整GC"或"Gen 2 GC"的计数器.

补丁将在利润率较高的物理内存限制运行.