2017-01-04 16 views
1

我们注意到在多个简单的GET查询长TTFB:在网页API简单的GET查询龙TTFB

[HttpGet] 
[Route("sebTestA/{id}")] 
public string SebTestA(int id) 
{ 
    return "test string"; 
} 

正如你所看到的,对数据库或文件没有访问所以应该是非常快,我在本地主机(没有网络问题)。

当我执行单个查询时,速度很快(〜30ms) 当我同时启动10个查询时,它会变得更高,并且可能会达到1秒,这会使我的应用程序挂起。

这里的查询在Chrome开发工具捕获:

query in Chrome dev tools

我不知道从哪里这种延迟是从哪里来的,我已经在和的Application_BeginRequest Application_EndRequest的global.asax.cs增加了一些日志:

10个查询我这里还有日志记录:

for 10 queries

正如你所看到的,查询No.6占用了453ms,而在我的日志中只有8ms。问题是从何而来?〜400ms?

+0

什么是“TTFB”? –

+1

第一个字节的时间(TTFB)是用作Web服务器或其他网络资源的响应速度的指标。 TTFB度量从发出HTTP请求的用户或客户端到客户端浏览器接收到页面的第一个字节的持续时间。 – Julia

回答

1

此延迟是由于ASP.NET管理的会话锁定/解锁导致的。 由于是一个Web Api,你不应该使用会话。你看那个页面的认证: https://www.asp.net/web-api/overview/security/individual-accounts-in-web-api

否则,在不改变很多代码,您可以更新您的Global.asax.cs使用文件:在这个完整的后

void MvcApplication_PostAuthenticateRequest(object sender, EventArgs e) 
{    
    System.Web.HttpContext.Current.SetSessionStateBehavior(SessionStateBehavior.ReadOnly); 
} 

查找的的相关详细答案: https://forums.iis.net/t/1234877.aspx?Performance+issue+on+IIS+on+multiples+GET+queries