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



我在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的操作。。。同样的结果

如果有人知道为什么会发生这种情况,并有解决问题的方法,或者只是有一个建议。。。请分享信息,我将非常感谢

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

谢谢!

编辑:我还尝试了一个空的WebForms项目。仅前5次请求就出现了延迟。。。但这肯定是因为IIS正在升温。接下来的1495个请求没有延迟。

您的测试方法无法确定瓶颈可能发生在哪里,只能确定是什么原因导致了延迟。

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

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

相关内容

  • 没有找到相关文章

最新更新