实体框架查询第一次连接和执行需要很长时间

时间:2016-09-08 09:26:10

标签: asp.net sql-server asp.net-mvc entity-framework azure

我对asp.net和IIS相对较新,我使用其他技术做了很多应用程序,但从未遇到过这样的问题。

我们在Azure上设置了一个实验室,其中包含所有需要的虚拟机,在一台计算机(IIS 7)上托管ASP.NET MVC 5.0应用程序,另一台托管SQL Server 2014的计算机托管其数据库,我们正在使用代码第一。

问题是当打开一个列出数据库表中记录的页面时,这只需要15秒,这是第一次从chrome浏览器或任何其他浏览器打开网站时,继续导航网站它没有时间。离开网站10分钟左右,回来后,问题再次发生,只需要15秒钟。

深入研究问题并在对性能进行概要分析后,大部分时间是在应用程序第一次触及数据库时花费,例如,一个非常简单的查询:

model.Workflows.ToList();

显然,连接到SQL服务器正占用大部分时间。第一次15秒是很多时间接受,我从来没有在任何应用程序中看到过这样的延迟。

对象图很小,只有12个表记录很少,甚至没有某些表的记录,例如,工作流表只包含2个记录。关系很复杂,但没有那么多。

我尝试使用SqlConnection类在没有实体框架的情况下进行连接,并且第一次使用它也需要4秒钟,它会好得多,但仍然有问题。

1 个答案:

答案 0 :(得分:0)

对于那些仍然面临同样问题的人,我尝试了很多没有运气的解决方案,包括raderick和许多其他资源提供的链接。

唯一对我有用的是将整个Windows Server 2008 r2(使用IIS 7.5)更新到Windows Server 2012 r2(使用IIS 8.5)。看起来它与IIS性能(可能是我的测试实验室)有关,而不是实体框架。

在Windows Server 2012 r2中的IIS 8.5中有一个非常有用的选项,在第7点(应用程序池暂停)查看此链接,在我的情况下性能大幅提升。

http://www.infragistics.com/community/blogs/brijmishra/archive/2015/08/21/12-tips-to-increase-the-performance-of-asp-net-application-drastically-part-2.aspx

我知道这不是第一种选择解决方案,但在某些情况下可能有所帮助。