为什么MvcHandler.BeginProcessRequest()这么慢?

时间:2014-03-14 05:24:33

标签: asp.net-mvc performance session-state

我有一个MVC项目,我正在考虑加快速度。我正在摸索的一件事是我无法控制的BeginProcesRequest()。使用New Relic我发现这种方法平均占用了交易完成所需时间的90%。

我的控制器中的代码非常简单。它查找用户的操作会话,并在找到时重定向到其仪表板。实际页面上没有任何数据库调用。唯一写的是:

if (Session["UserID"] != null)
// Perform actions

正如您在屏幕截图中看到的那样,BeginProcessRequest()方法需要将近4秒

enter image description here

这不是我网站的独特之处吗?我正在为服务器使用一个小的EC2实例,虽然网站上还运行其他应用程序,但CPU和内存在整个请求期间都保持为0。

EDIT - 审核了以下帖子:

What happens in BeginProcessRequest()?

然而,当我的应用程序在最耗时的请求发生时处于空闲状态时,我无法看到它与竞争线程的关系。

1 个答案:

答案 0 :(得分:1)

我认为问题出在IIS上,因为在我将应用程序池中的空闲超时属性更改为一天之后,它现在似乎在初始启动时加载速度更快。

我还明确禁用了家庭控制器上的会话状态,并确保SQL Server的自动关闭参数设置为关闭。