2016-06-23 70 views
6

最近我遇到了SQL Azure/Web Apps/Entity Framework的一些非常奇怪的性能问题。Azure SQL/EF性能问题

看起来,偶尔对数据库的调用(包括读取和写入查询)会在几秒到几分钟(!)之间的任何地方挂起。即使在包含5行数据的4列的表上的选择查询中也会发生这种情况。

这个问题似乎是随机发生的,不可重现。将数据库升级到更高性能层似乎没有任何影响。网络应用程序和sql azure数据库都在同一个区域。

数据库性能图通常是平坦的,约为资源利用率的0.5%,偶尔会高达5%左右 - 所以问题肯定不在于资源限制。

我不知道如何开始调查这个问题,鉴于它的间歇性。我将不胜感激任何反馈。上周的问题

它可能与Entity Framework专门处理数据库连接到sql azure的方式有关吗?在本地SQL Express上进行测试从未引起类似的情况。

+0

”看起来偶尔对数据库的调用(包括读写查询)会在几秒钟和几分钟之内挂起(!)“你需要使用一些像sql nexus这样的工具并检查发生了什么数据库一段时间。 – TheGameiswar

+0

我在同一条船上,让我知道可能的技巧/修复 – Jaya

+0

我还没有想出解决方案或原因。我肯定会分享,当我知道了 –

回答

2

在与Entity Framework进行对抗性能问题之后,我们终于转向了Dapper,并且看到了性能的巨大提升。他们在他们的GitHub页面上有一些基准测试,显示速度差异。

https://github.com/StackExchange/dapper-dot-net

而且,我不能确定你使用的是什么版本的EF的,但如果是EF核心,其性能是目前比以前的版本差。性能的另一个比较可以在这里找到:https://www.exceptionnotfound.net/dapper-vs-entity-framework-vs-ado-net-performance-benchmarking/

+0

感谢您的反馈!我会进一步研究Dapper。我在EF 6.1.3上。一般来说,性能是可以接受的(这不是一个过于复杂的应用程序)。在本地运行应用程序(在具有2核和4gb ram的虚拟机上)和SQL Express - 它工作得非常好。问题出现在间歇性的“SQL Azure连接挂起”(缺乏更好的术语)连接似乎冻结了一段时间 - 几秒到几分钟。我想我应该用Drapper运行一个简单的测试 - 找出是否会出现类似的连接挂起。 –

0

好吧,看起来我已经找到了解决方案,解决了我的性能问题 - 并且就像启用多个活动结果集(https://msdn.microsoft.com/en-us/library/h32h3abf(v=vs.110).aspx)一样简单。

从2年前开始,EF框架肯定发生了一些变化 - 因为问题只是在升级到6.1.3之后才出现。我不确定最初的版本是什么 - 但它是两年前的最新版本。

我希望这可以帮助别人。它引起了我很多的悲痛,并且耗费了一大笔潜在的项目。 “