ASP.NET MVC项目中一些请求的巨大延迟

ASP.NET MVC项目中一些请求的巨大延迟

问题描述:

我在IIS上托管的ASP.NET MVC项目存在问题。我淹没了同样的要求数百次:ASP.NET MVC项目中一些请求的巨大延迟

function Test(count){ 
    for(var i=0; i<count; i++){ 
     $.ajax({ 
      url: "http://example.com?someparam=sth&test="+i, 
      context: document.body 
     }).done(function() { 
      console.log("done"); 
     }); 
    } 
} 
Test(500) 

下面是每个请求的以毫秒为单位的所用的时间(这里仅仅是发送请求的一部分):

221 
215 
225 
429 
217 
228 
227 
209 
236 
355 
213 
224 
257 
249 
223 
211 
227 
1227 
168 
181 
257 
3241 
201 
244 
130 
198 
283 
1714 
146 
136 
177 
3304 
294 
868 
772 
2750 
138 
1283 
221 
775 
136 
235 
792 
278 
641 
1707 
880 
1711 

,你可以看到有些请求出现高峰,所需时间可能会超过其他请求平均值的10倍。

  1. 虽然它可能是一个垃圾收集器的问题,但我认为它不是。我根据每个请求调用了GB。我有同样的结果,日志中的延迟仍然存在。
  2. 这不仅发生在我的MVC项目上,而且还发生在一个空的MVC项目上。
  3. 我创建了一个新的MVC项目,并向Home/About发送了很多请求。结果是一样的。
  4. 我尝试了一个返回EmprtActionResult ...的结果。

如果有人知道为什么发生这种情况,有针对该问题的解决方案或只是有一个建议......请分享信息,我将非常感激

而且我使用.NET Memory Profiler,但我无法找到如何跟踪每个请求,并准确捕捉延迟请求。我可以用.NET Memory Profiler吗?如果我不建议使用另一个将为我工作的分析器。

谢谢!

编辑:我也尝试过一个空的WebForms项目。只有第一次请求才有延迟......但这是因为IIS确实正在升温。并且在接下来的1495次请求中不会出现延迟。

+0

这是在本地运行吗?你在使用一些ORM吗? – 2015-02-24 13:48:45

+0

由于延迟似乎经常发生,因此您可以尝试查看是否可以直接在您的MVC应用程序中使用MiniProfiler查明问题。 – AroglDarthu 2015-02-24 13:56:48

+0

所以我尝试了它在本地和服务器上。这些结果来自IIS日志。我认为不管是否使用任何ORM都没关系,因为当我在新的Empty MVC项目上尝试时,结果是一样的。 – Dzhambazov 2015-02-24 14:06:56

您的测试方法无法确定您的瓶颈可能发生的位置,只是有些事情造成您的延迟。

此外,没有提及这是否是一个孤立的服务器。如果您正在访问制作网站,访问该网站的访问者请求访问网页时会受到影响。

至少,您需要为此添加一个控件。我会从同一个Web服务器加载一个纯文本文件开始。另一点需要注意的是,大多数网络浏览器将限制同一网站的并发请求数量。通常,这是两个同时请求。您的延迟可能是您客户端的ajax请求积压。