我们在重负载下处理请求的速度很慢。在这些突发期间查看当前正在运行的请求时,我可以看到许多对我们的Web服务代码的请求。
请求数量不是很大,但它们似乎停留在预处理状态。以下是一个例子:
由于需要支持一些遗留代码,我们在经典模式下运行IIS7应用程序池。
其他请求仍在继续处理,但这些卡住的请求似乎逐渐填满了可用的线程,导致其他页面的处理速度变慢。
有没有人知道这些请求被卡住的地方。
数据库似乎没有资源问题,请求状态显示建议这都是预处理。
我们已对本地计算机上涉及的代码运行负载测试,无法复制问题。
另一个可能的因素是我们正在使用MVC和UrlRouting。
非常感谢您的帮助。
答案 0 :(得分:0)
遗憾的是,有些问题只发生在生产服务器上,因为负载测试永远无法模拟现实世界的用户。
您可以尝试在性能不佳时捕获挂起转储,然后分析它们(通过http://support.microsoft.com自行或打开支持案例以使用Microsoft支持)。
通常您可能遇到了着名的线程池瓶颈http://support.microsoft.com/kb/821268。转储分析可以轻松告诉罪魁祸首并帮助找到解决方案。
答案 1 :(得分:0)
为什么不将它们移动到自己的AppPool中以将它们与经典ASP应用程序分开 - 然后您将有更多选项进行调整。