【问题标题】:Entity framework very slow to load for first time实体框架第一次加载很慢
【发布时间】:2012-08-16 22:10:45
【问题描述】:

我在我的网站上使用 EF 4 并发现了一个非常令人不安的问题 - 首次运行加载时间非常慢。 (大约 20-30 秒)。 第一次运行后 - 它会运行得非常快。

我所说的“第一次跑步”是指长时间没有活动(10 分钟左右)后的跑步。

因此,如果流量很大,则该网站运行良好。如果有缓慢的日子 - 在长时间的交通中断后第一个来到网站的人会得到非常糟糕的体验。

因为该网站还公开了一个 API - 那里也是如此。第一个调用它的人 - 会在他身边获得超时。

我的数据库是 SQL Server 2008 R2。

任何想法为什么会发生这种情况?如何解决?

谢谢!

【问题讨论】:

标签: asp.net sql-server entity-framework entity-framework-4


【解决方案1】:

可能是 EF,但也可能是您的应用程序池在 IIS 或组合上被回收。

如果您的网站使用速度较慢,并且您希望每个页面为随之而来的访问者快速加载,过去我已经设置了一个定时作业以在特定时间间隔访问我的网站(大约5 分钟对我来说很有效),这确保了当有访客来访时它总是准备就绪。

如果您可以访问任务调度程序,这很容易做到。

【讨论】:

  • 好吧,必须使用任务调度程序 :) 似乎可以解决问题。
  • 很多关于ORM系统启动延迟问题的信息,所以必须创造性地解决它:)在IIS 7.5及更高版本中有一些更简单的解决方案。
【解决方案2】:

我也遇到了这个问题,我发现它与我的数据库中的大量视图有关。

Performance Considerations (Entity Framework) 确实有帮助,steps for mitigating the impact of generating views 将 45-60 秒的初始加载时间缩短到 3-4 秒。

【讨论】:

    【解决方案3】:

    我会做更多研究以确定它是 EF、DB 还是 IIS。我认为 IIS 看起来可能是罪魁祸首,就像@E.J.布伦南说。

    在 IIS 中,我会确保 IIS 应用程序池没有被回收,而正常情况下可以管理频率以减少对最终用户的影响。 EF 可能不是问题,但应用程序或数据库中的缓存可能会隐藏潜在的 SQL 问题。捕获查询并分析执行计划以确保它是最优的。

    希望这有助于查明问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-06
      • 2011-04-22
      • 1970-01-01
      • 2020-12-03
      • 2014-12-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多