我有一个 IIS Web 服务器,它托管 400 个 Web 应用程序(分布在 30 个应用程序池中)。它们都是 ASP.NET 应用程序和 WCF 服务端点。服务器有 32GB 的 RAM,通常运行速度很快;尽管它以 95% 的内存使用率运行。每个工作进程占用 500MB 到 1.5GB 的 RAM。
我还有另一个运行 SQL Server 的机器。那个有足够的可用内存。
有时,Web 服务器开始抛出SQL 超时异常。起初每分钟几个,然后迅速增加到每分钟数百个;有效地使服务器停机。此问题会影响所有池中的应用程序。一些请求仍然完成,但大多数没有完成。虽然发生这种情况,但服务器上的 CPU 使用率约为 30%(这是该机器上的正常负载)。
虽然发生这种情况,但我们仍然可以使用 SQL Server Management Studio(来自 IIS 服务器)成功(并且快速)执行请求。
解决方法是重新启动 IIS。然后一切都恢复正常,直到下一次。
因为服务器以非常低的内存运行,我觉得这就是原因。但是我无法解释低内存和突然爆发的 SQL Timeout 异常之间的关系。
任何想法?