2016-06-23 111 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之後纔出現。我不確定最初的版本是什麼 - 但它是兩年前的最新版本。

我希望這可以幫助別人。它引起了我很多的悲痛,並且耗費了一大筆潛在的項目。 「