2012-08-16 112 views
4

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

我的意思是“第一次跑步”是在没有任何活动(10分钟左右)很长时间后跑步。

因此,如果有很多流量,该网站工作得很好。如果天气缓慢 - 第一个在漫长的交通中断后来到现场的话,将会有非常糟糕的体验。

因为该网站还公开了一个API - 同样的情况发生在那里。第一个叫它 - 会在他身边得到暂停。

我的数据库是SQL Server 2008 R2。

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

谢谢!

+2

这是一个已知的行为:http://stackoverflow.com/questions/10757019/entity-framework-initialization-is-slow-what-c​​an-i-do-to-bootstrap-it-faster另外两个参考:http ://stackoverflow.com/q/9261095/270591和http://stackoverflow.com/q/11543990/270591 – Slauma 2012-08-16 22:18:58

回答

3

可能是EF,但同样可能会导致您的应用程序池在IIS或其组合上被回收。

如果您的网站上的使用时间很慢,并且您希望每个页面都能够为访问者一起快速加载,在过去,我已经设置了定时工作以按特定时间间隔打开我的网站(大约5分钟为我工作),并且确保当访问者出现时总是准备好。

如果您有权访问任务计划程序,则很容易。

+0

那么,必须使用任务调度:)似乎解决了这个问题。 – Roman 2012-08-17 15:59:35

+0

很多有关ORM系统延迟启动问题的信息,所以必须创造性地修复它:)在IIS 7.5及更高版本中,有一些更简单的解决方案。 – Roman 2012-08-17 16:00:08

0

我会做更多的研究,以确定它是一个EF,数据库或IIS。我认为IIS看起来可能是罪魁祸首,就像@ E.J。布伦南说。

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

希望此帮助能够找出问题所在。