我对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秒钟,它会好得多,但仍然有问题。
答案 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点(应用程序池暂停)查看此链接,在我的情况下性能大幅提升。
我知道这不是第一种选择解决方案,但在某些情况下可能有所帮助。