Web Api中简单GET查询的长TTFB

时间:2017-01-04 07:29:48

标签: c# asp.net iis-8

我们注意到多个简单GET查询的长TTFB:

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

正如您所看到的,无法访问数据库或文件,所以应该非常快,我在localhost(没有网络问题)。

当我执行单个查询时,速度很快(~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?

1 个答案:

答案 0 :(得分: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

相关问题