ASP.NET活动会话无限增长

时间:2016-06-07 21:00:59

标签: asp.net

使用PerfMon,我可以看到我的ASP.NET应用程序(总计)\会话活动无限增长到数万,我怀疑这会导致我们最近观察到的性能下降

增长似乎是每分钟几十个。

我们正在使用.Net 4.5和IIS 7.5

如何使用管理工具获取有关这些会话的一些详细信息示例?什么可能导致这个?我可以采取哪些后续措施来诊断这种奇怪的行为?

1 个答案:

答案 0 :(得分:0)

在Session_OnStart事件上放置一个钩子(更多关于MSDN上的那些事件:https://msdn.microsoft.com/en-us/library/ms178583.aspx)。

从那里你应该根据情况进行检查和升级。

首先,只需在事件处理程序中放置一个断点,并在开发环境中进行一些正常浏览。您可以在chrome中使用隐身窗口来实现匿名,以便创建会话。如果您需要在生产中执行此操作,则应设置某种日志记录数据库或利用现有的日志记录数据库来记录会话请求(如果需要所有数据,可以临时序列化它们)。

查看这些会话的请求路径,以及一般的某些上下文数据。如果存在错误的会话,则每个请求应该多次调用处理程序,这应该是显而易见的。从那里,您可以确定如何处理即将进入的额外路径或请求。

由于您标记了此asp.net,因此很难确定与您使用的确切版本或框架相关联的内容。但是,一般来说,我注意到许多浏览器会意外地导致额外的会话请求资源,尤其是favicon

强烈建议您不要为favicon创建会话。在asp.net mvc中你可以通过忽略路由来做到这一点。在asp.net mvc中,您也可以忽略过多的资源。这是在像这个

这样的global.asax.cs文件中完成的
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("favicon.ico");

如果由于这些类型的请求而创建了额外的会话,请查看您的应用程序中是否有可以执行此操作的位置。