4

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

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

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

因为该网站还公开了一个 API - 那里也发生了同样的情况。第一个调用它 - 将在他身边获得超时。

我的数据库是 SQL Server 2008 R2。

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

谢谢!

4

3 回答 3

3

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

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

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

于 2012-08-16T22:16:49.570 回答
1

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

性能注意事项(实体框架)确实有帮助,减轻生成视图影响的步骤将 45-60 秒的初始负载降低到 3-4 秒。

于 2013-05-01T16:01:35.420 回答
0

我会做更多的研究来确定它是 EF、DB 还是 IIS。正如@EJ Brennan 所说,我认为 IIS 看起来可能是罪魁祸首。

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

希望这有助于查明问题。

于 2012-08-16T22:20:30.763 回答