我在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倍以上。
EmprtActionResult
...同样结果的操作。如果有人知道为什么会发生这种情况并且有问题的解决方案或只是有建议...请分享信息,我将非常感激
我也使用.NET Memory Profiler
,但我无法找到如何跟踪每个请求并准确捕获请求并延迟。我可以使用.NET Memory Profiler
吗?如果我不建议另一个将为我工作的探查器。
谢谢!
编辑:我还试过一个空的WebForms项目。仅有第一个5个请求的延迟......但这是因为IIS肯定会升温。接下来的1495个请求没有延迟。
答案 0 :(得分:0)
您的测试方法无法确定您的瓶颈可能发生的位置,只会导致您的延迟。
此外,没有提及这是否是一个孤立的服务器。如果您正在访问生产网站,当访问该网站的访问者请求页面时,您将受到影响。
至少,你需要为此添加一个控件。我首先从同一个Web服务器加载纯文本文件。另一点需要注意的是,大多数Web浏览器都会限制同一网站的并发请求数。通常,这是两个同时发出的请求。您的延迟可能是您客户的ajax请求积压。