我有一个网站,每分钟页面请求数为 350 - 380,持续挂起。这是一个 ac# .NET 4 网站,运行在运行 iis 7 和 SQL Server Express 的 2008 R2 服务器上。它使用 .NET 4 附带的 EF 版本。我已经编译了大部分查询。
我通常必须重新启动 IIS 才能使其再次提供服务。
该服务器是 4mghz 8 核 1 CPU 服务器,配有 32 GB 的 RAM。
我有
- 将 maxconcurrentpercpu 增加到 200 或 300
- 增加了 iis 10 000 中的队列长度
- 将 iss 中的最大池大小更改为 300
- 增加了超时时间,然后又减少了超时时间,以确保不会阻止进一步的请求
- 将 IIS 中每个处理器的线程限制增加到 100
但它仍然挂在大约 350 个页面请求(230 - 230 个活跃使用)上。有趣的是,这似乎是某种硬性限制。
(我应该将应用程序超时设置为默认值并有选择地增加某些页面的超时?)
任何想法都将不胜感激。
答案1
查看性能计数器,例如每秒请求数和当前请求数。尝试在其中一次挂起期间捕获当前请求数,并查看它们是否呈上升趋势并持续下去,这将表明请求在某些地方受阻,并且会持续堆积,应用程序池会中断。
另外,下载调试诊断并将其设置为监视应用程序池并收集转储,以显示出现问题的位置。了解如何使用它相对容易。
此外,SqlServer express 有其自身的 CPU/内存限制,因此您对其施加的负载可能太大。
但这听起来不像是 IIS 问题。