【问题标题】:What exactly happens in BeginProcessRequest()? (No session state)BeginProcessRequest() 中究竟发生了什么? (无会话状态)
【发布时间】:2015-02-27 01:06:38
【问题描述】:
System.Web.Mvc.MvcHandler.BeginProcessRequest() 中究竟发生了什么?我有一个在 Azure 上运行的 MVC 项目,使用 NewRelic 它显示 BeginProcessRequest() 的时间为 500ms-1500ms。我不使用 SessionState(web.config 中的<sessionState mode="Off" />)。
我已经看过这个类似的问题:What happens in BeginProcessRequest()?
这里到底发生了什么?
谢谢!
【问题讨论】:
标签:
c#
session
azure
model-view-controller
newrelic
【解决方案1】:
除了与会话状态相关的线程敏捷性之外,还有几件事会导致 BeginRequest 时间过长。
如果 New Relic 无法在事务中获取足够深入/详细的数据,它会将其汇总到 BeginRequest 方法时间。如果时间可以花在数据库或外部服务上,也会发生这种情况。这也通过无法绑定到触发它的事务的异步活动来演示。
在应用程序首次启动时,您也可以看到较长的 BeginRequest 时间。对于您的 Azure 应用程序,您可以尝试将您的应用程序池的启动模式设置为“始终开启”,以减少您的应用程序可能必须停止/启动的时间,从而导致长时间的启动请求。
Here 是一个包含一些附加信息的文档,here 是一个论坛帖子,没有会话状态的用户也有类似的问题。