AcquireRequestState中的长延迟

时间:2015-05-06 03:23:29

标签: asp.net webforms newrelic

使用性能监控工具“New Relic”我在“AcquireRequestState”中偶尔会看到(但是太多)长时间延迟。我说的是10秒,20秒延迟,有时是几分钟。

我知道我们没有为此活动编写自己的事件处理程序。

我甚至在哪里开始寻找这些延迟的原因?我到目前为止在msdn上发现的一些小信息都没有帮助。

2 个答案:

答案 0 :(得分:5)

我的团队看到了这个" AcquireRequestState" NewRelic今天早些时候报道的延迟,当时我们的一个ASP.NET应用程序在特定页面上出现了性能问题。

根本原因是我们最近部署到SQL Server数据库的存储过程的更改,这无意中导致该存储过程需要很长时间才能执行。存储过程被称为显示具有性能问题的页面的一部分。

我们能够通过识别和修复存储过程的性能问题来解决问题。 " AcquireRequestState" NewRelic的问题被证明是无关紧要的;这是问题的症状,而不是原因。

这是在Windows Server 2008上运行的ASP.NET 4.5应用程序。

tl; dr:" AcquireRequestState" NewRelic报告的延迟可能是导致ASP.NET应用程序中的一个或多个页面和/或AJAX请求需要花费很长时间才能加载的其他问题的副作用。

答案 1 :(得分:0)

我怀疑您存储的proc更改可能会突出显示会话锁定方面的一个稍有不同的问题,在不同的情况下我们的报告大致相同,我非常希望鼓励您测试异步会话提供程序,因为在此处提到并确保您使用每个会话的并发请求应用程序设置:

https://stackoverflow.com/a/55331786/7581050

最终,任何长时间运行的过程(对于您而言是存储的proc更改)将阻止对该会话的任何进一步请求。由于此“块”发生在IIS管道的不同部分中,因此NewRelic只是将其记录为“ AcquireRequestState”

PS:我知道这个答案来得很晚,但是我终于找到了可以为我们解决类似问题的东西,我怀疑将来会帮助很多人。