我们注意到多个简单GET查询的长TTFB:
[HttpGet]
[Route("sebTestA/{id}")]
public string SebTestA(int id)
{
return "test string";
}
正如您所看到的,无法访问数据库或文件,所以应该非常快,我在localhost(没有网络问题)。
当我执行单个查询时,速度很快(~30ms) 当我同时启动10个查询时,它会变得更高并且可以达到1秒,这会使我的应用程序挂断。
这是在Chrome开发工具中捕获查询:
我不知道这种延迟来自何处,我在Application_BeginRequest和Application_EndRequest中添加了一些global.asax.cs中的日志:
这里记录了10个查询的记录:
正如您所看到的,查询No.6花了453ms,在我的日志中只有8ms。问题是来自这个~400ms?
答案 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