使用性能监控工具“New Relic”,我看到“AcquireRequestState”偶尔(但太多)长时间延迟。我说的是 10、20 秒的延迟,有时是几分钟。
我知道我们还没有为这个事件编写我们自己的事件处理程序。
我什至从哪里开始寻找这些延迟的原因?到目前为止,我在 msdn 上找到的少量信息并没有帮助。
最佳答案
今天早些时候,当我们的一个 ASP.NET 应用程序在特定页面上出现性能问题时,我的团队看到了 NewRelic 报告的这种“AcquireRequestState”延迟。
结果证明,根本原因是对我们最近部署到 SQL Server 数据库的存储过程进行了更改,这无意中导致该存储过程需要很长时间才能执行。存储过程作为显示存在性能问题的页面的一部分被调用。
我们能够通过识别和修复存储过程的性能问题来解决该问题。来自 NewRelic 的“AcquireRequestState”问题被证明是无关紧要的;这是问题的症状,而不是原因。
这是在 Windows Server 2008 上运行的 ASP.NET 4.5 应用程序上。
tl;博士: NewRelic 报告的“AcquireRequestState”延迟可能是其他一些问题的副作用,该问题导致 ASP.NET 应用程序中的一个或多个页面和/或 AJAX 请求需要很长时间才能加载。
关于asp.net - AcquireRequestState 中的长时间延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30066925/