我正在使用StackExchange.MiniProfiler
与MVC和EntityFramework附加组件来尝试跟踪我们网站上一种类型请求可靠发生的长TTFB。正如您在底部的图像中看到的,此请求指示的持续时间为504.3ms。我认为这相当于MiniProfiler.Start
中BeginRequest
的调用与MiniProfiler.End
中EndRequest
的调用之间的时间(减去子步骤的时间)。使用浏览器工具我可以看到此请求的TTFB与MiniProfiler的数据相对应,因此我认为MiniProfiler是准确的。我一直在为越来越多的代码添加探查器步骤,并认为现在所有内容都已被包装,但它们并没有加起来接近504ms。
此请求是一个ajax请求,该请求发生在同时正在执行其他一些请求的页面上。如果我把url拿出来并单独从同一个浏览器中点击它,持续时间和TTFB只有~100ms。这似乎意味着其中一个请求阻止了这个问题,但我认为我们没有任何应该阻止的东西,当然不会那么久,其他请求都没有那么久。
该网站作为中级Azure应用服务运行,这可能是某种限制吗?我怎么能确认或否认呢?任何可能在这里公开更多数据的MiniProfiler技巧?
答案 0 :(得分:0)
这个问题与这个问题有关: I just discovered why all ASP.Net websites are slow, and I am trying to work out what to do about it
会话状态被锁定,因此如果您有来自一个浏览器/会话的一堆同时请求,他们最终可能会互相等待。使用属性将我们的一些相关控制器指定为只读状态会导致错误消失:[SessionState(SessionStateBehavior.ReadOnly)]