最近,我的Web Api 2 w / Entity Framework 6.1服务器上的Web请求速度急剧下降。向查询数据库的所有请求添加~5000ms。我花了最后三天试图弄清楚我的头发。
设定:
我做了什么:
为什么我说处理程序和控制器之间有延迟?我在控制器操作的开始和结束时使用DateTime.Now计时, 1745ms 日志记录处理程序在await base.SendAsync(request,cancellationToken)之前和之后执行一次, 6234ms 。我也对绑定进行了定时,只有2ms。
4489ms 的时间是下落不明的。其他请求有类似的时间。它发生在日志处理程序获取请求并报告之后但绑定开始之前。那里发生了什么?它来自哪里?我们没有任何脱离的异步void方法,我们没有任何应该花费那么长时间的请求操作。完全难倒。
编辑:重复相同的请求不会提高性能。我不相信一个人的表现就是问题,而且一直很差。
答案 0 :(得分:4)
我很感激帮助,我最终找到了答案。
我们有服务被注入控制器,他们的构造函数正在使用预先加载某些东西的潜在异步调用。将其更改为使用 AsyncLazy 是解决方案。
对类似情况下的人有潜在帮助的步骤,现在列举。
曾经玩过棋盘游戏Guess Who?这与调试非常相似。你想要问打倒一半潜在的问题。不要以&#34开头;这是一种我觉得肮脏的特定方法"而是从以下开始: