【问题标题】:ASP.Net MVC4 Application Runs slowASP.Net MVC4 应用程序运行缓慢
【发布时间】:2013-06-28 12:00:49
【问题描述】:

我已经在 ASP.NET 中创建了这个 Web 应用程序。该应用程序最初是在 VS2010 上的 MVC3 中开发的,但最近我们已将其迁移到 VS2012 MVC4。

迁移的原因是我们需要使用 MVC4 和 OS win 8 支持的 SignalR。 (SignalR 在早期版本中工作,我知道,但它使用回退方法。因此我们不得不迁移。)

我们也在使用 Fluent Nhibernate。它目前在 IIS 8 上本地托管。

现在问题来了。 该应用程序第一次完美加载。事实上,它对前几个请求是这样做的。但是经过几次请求后,它的回复速度太慢了。有时它只是崩溃。刷新总是崩溃。

有没有其他人遇到过这样的问题?

任何帮助都会非常有帮助。谢谢 :)

编辑:

有点像这里的这个人所面临的,但我只有在几次请求后才会发生这种情况 Why is the ASP.NET/Visual Studio Web Development Server so slow?

【问题讨论】:

  • 定义“崩溃”?定义“慢”?缓慢从何而来? Fiddler,YSlow,您的日志记录和跟踪说什么?这个问题对于SO来说太宽泛了。没有 "哦,MVC 很慢,除非您添加 <slowness disabled="true" />" 答案。 必须查明问题的原因,无论是数据库调用、文件锁定、HTTP 请求负载、磁盘故障还是其他原因。
  • 您是否只在使用数据库时遇到性能问题?如果配置不当,NHibernate 有时会显着影响性能。
  • 除非出现某种硬件故障,否则事情通常不会“崩溃”。错误是什么?有可能在某处抛出异常,这是什么?抛出它的代码是什么?该代码发生时的运行时值是多少?当它很慢时,瓶颈是什么?什么代码在等待,它在等待什么?
  • 是的!错误是什么?并欢迎使用stackoverflow :)
  • 好的,我配置了 nhibernate 以禁用延迟加载。我知道这会影响性能。但是如果是这样的话,调试开始后它会很慢。所花费的时间是在调试开始之前。

标签: asp.net-mvc-4


【解决方案1】:

没有看到任何代码,我只能猜测,但我遇到了一个问题,即使用 Fluent NHibernate 的应用程序运行速度越来越慢。以下是您可能做错的两件事:

确保会话工厂在应用程序的整个长度内都存在。例如,我有以下代码(使用 Microsoft Unity)来注册我的依赖项:

builderContext.Container.RegisterType<ISessionFactory>(new ContainerControlledLifetimeManager(), new InjectionFactory(c => {
    return BuildSessionFactory();
}));

其次,确保在每次请求后关闭 NHibernate 会话。例如,假设您将会话存储在 HttpContext.Current.Items 中,然后在 Application_EndRequest 事件中(在 Global.asax 文件中)您会这样说:

var session = HttpContext.Current.Items["NameOfCache"] as ISession;

if (session != null && session.IsOpen)
    session.Close();

第二个更可能导致应用程序逐渐变慢。我希望这会有所帮助。

【讨论】:

  • 在会话实例周围使用 'using' 关键字还不够吗?它会处理会话对象。这是否也关闭了与该实例相关的所有连接?
  • 调用 Dispose(或使用 using 块)将调用 Close,所以你应该没问题。
猜你喜欢
  • 2011-01-14
  • 1970-01-01
  • 2013-10-31
  • 1970-01-01
  • 2012-04-03
  • 2015-05-03
  • 1970-01-01
  • 1970-01-01
  • 2018-05-18
相关资源
最近更新 更多