0

我们在重负载下遇到请求处理缓慢的问题。在查看这些突发期间当前正在运行的请求时,我可以看到对我们的 Web 服务代码的许多请求。

请求的数量不是很大,但它们似乎停留在预处理状态。下面是一个例子:

由于需要支持一些遗留代码,我们在经典模式下运行 IIS7 应用程序池。

继续处理其他请求,但这些卡住的请求似乎逐渐填满了可用线程,导致其他页面的处理速度变慢。

有没有人知道这些请求在哪里卡住了。

数据库似乎没有资源问题,并且请求状态显示表明这都是预处理。

我们已经对本地机器上涉及的代码进行了负载测试,并且无法复制该问题。

另一个可能的因素是我们正在使用 MVC 和 UrlRouting。

非常感谢您的帮助。

4

2 回答 2

0

不幸的是,有些问题只发生在生产服务器上,因为负载测试永远无法模拟真实世界的用户。

您可以尝试在性能不佳时捕获挂起转储,然后对其进行分析(您自己或通过http://support.microsoft.com打开支持案例以与 Microsoft 支持合作)。

通常你可能遇到了著名的线程池瓶颈,http://support.microsoft.com/kb/821268。转储分析可以很容易地找出罪魁祸首并帮助找到解决方案。

于 2012-07-16T03:05:29.063 回答
0

为什么不将它们移动到它们自己的 AppPool 中以将它们与经典 ASP 应用程序分开 - 然后您将有更多选项可以调整。

于 2012-07-16T08:38:57.720 回答