System.Web.Mvc.MvcHandler.BeginProcessRequest() 中到底发生了什么?我有一个在 Azure 上运行的 MVC 项目,对于 NewRelic,它显示 BeginProcessRequest() 的时间为 500ms-1500ms。我不使用 SessionState(web.config 中的 <sessionState mode="Off" />
)。
我已经看过这个类似的问题:What happens in BeginProcessRequest()?
这里到底发生了什么?
谢谢!
最佳答案
除了与 session 状态相关的线程敏捷性之外,还有一些因素可能会导致较长的 BeginRequest 时间。
如果 New Relic 无法在事务中获取足够深入/详细的数据,则会将其汇总到 BeginRequest 方法时间中。如果时间花在数据库或外部服务上,也可能会发生这种情况。这也通过异步事件得到了证明,异步事件无法绑定(bind)回触发它的事务。
在某些情况下,当应用程序首次启动时,您会看到很长的 BeginRequest 时间。对于您的 Azure 应用程序,您可以尝试将应用程序池的启动模式设置为“始终开启”,以减少应用程序可能必须停止/启动(导致长时间启动请求)的次数。
Here是一个包含一些附加信息的文档,并且 here是一个论坛帖子,其中没有 session 状态的用户也遇到了类似的问题。
关于c# - BeginProcessRequest() 中到底发生了什么? (无 session 状态),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27712704/