为什么MvcHandler.BeginProcessRequest()如此缓慢?

9
我有一个MVC项目,想加快速度。但我对于我无法控制的BeginProcesRequest()感到困惑。通过使用New Relic,我发现该方法平均消耗了完成交易所需时间的90%。
我的控制器中的代码非常简单。它查找用户的操作会话并在找到时重定向到其仪表板。实际页面上没有任何数据库调用。唯一的代码是:
if (Session["UserID"] != null)
// Perform actions

如您在截图中所见,BeginProcessRequest() 方法需要近4秒钟的时间。

enter image description here

这不可能只是我的网站独有的问题吧?我在服务器上使用小型EC2实例,并且虽然有其他应用程序在运行,但CPU和内存在整个请求过程中基本保持为0。

编辑 - 查看以下帖子:

What happens in BeginProcessRequest()?

但是,由于我的应用程序处于空闲状态时最耗时的请求发生,因此我无法看到它与竞争线程有任何关系。


可能是BeginProcessRequest()函数中发生的事情?的重复问题。 - Rowan Freeman
@RowanFreeman,我看到了这个,但是当最糟糕的时间发生时,我的应用程序实际上是空闲的,所以我无法看出它与竞争线程有何关系。 - Paul
你试过列出的解决方案,看看会发生什么吗? - Rowan Freeman
@Paul,在你的MVC应用程序中,你是否实现了自定义MVC处理程序来路由请求? - Vishal Sharma
@vishalsharma,没有自定义路由处理程序。事实上,甚至没有定义任何自定义路由。 - Paul
显示剩余2条评论
1个回答

1

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

我还明确禁用了我的主页控制器上的会话状态,并确保SQL Server的自动关闭参数已关闭。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接