ASP.NET MVC项目中某些请求的延迟很大

时间:2015-02-24 12:48:57

标签: c# .net asp.net-mvc iis asp.net-profiles

我在IIS上托管的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 ...同样结果的操作。
  5. 如果有人知道为什么会发生这种情况并且有问题的解决方案或只是有建议...请分享信息,我将非常感激

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

    谢谢!

    编辑:我还试过一个空的WebForms项目。仅有第一个5个请求的延迟......但这是因为IIS肯定会升温。接下来的1495个请求没有延迟。

1 个答案:

答案 0 :(得分:0)

您的测试方法无法确定您的瓶颈可能发生的位置,只会导致您的延迟。

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

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