2016-08-25 82 views
2

我一直在分析在Azure SQL中運行的數據庫執行得非常糟糕。它位於具有1750個DTU的優質等級上,並且有時仍然可以使DTU達到最大值。Azure SQL - DTU CPU使用差距

我發現了各種查詢和可怕的數據訪問模式,通過存儲過程,減少了負載。但是,下圖中DTU和CPU使用率之間仍然存在很大差異,我在Azure SQL中查看到的「查詢性能洞察」的任何其他映像都顯示DTU線大部分與CPU使用率保持一致。

DTU (in red) to CPU usage per query

望着C#應用程序坐在ontop的這一點,對於使用該應用程序的每個用戶,它會創建一個SQL用戶,並使用該用戶的連接字符串中訪問數據庫。這意味着沒有使用連接池,導致SQL Azure數據庫上的活動用戶/會話數量大量增加。這是DTU使用率如此之高的唯一原因嗎?

或者我可能會錯過有關在Azure門戶中不可見的IO的信息嗎?

感謝 尼爾

編輯:添加會話和工人形象!

enter image description here

基礎上,即時通訊現在不是convinved ..什麼是會話百分比是多少?就像它的10%但是10%是什麼?最大允許?

EDIT2:增加更多的指標:

一週: enter image description here

2-3小時,當負載較高: enter image description here

紫穗我相信是重新索引,以便可以忽略!

+0

看看Query Store中佔用CPU時間最多的是什麼。 – leppie

+0

是的,我做到了這一點,但正如您從附圖中看到的,前20個查詢的CPU使用率僅使用5-10%,您將看到DTU的使用率總是高出30%左右,有時會出現尖峯接近100%的DTU使用率!其他數據庫的DTU和CPU通常像這樣跟蹤彼此https://acom.azurecomcdn.net/80C57D/cdn/mediahandler/docarticles/dpsmedia-prod/azure.microsoft.com/en-us/documentation/articles/sql-database -query-performance/20160817102412/performance.png – user1957687

+0

查詢ID 122正在使用61.5%!將前5名加在一起,你幾乎可以達到85%,如果可以改進的話,我肯定會看到122%。如果可能,請發佈查詢計劃。 – leppie

回答

1

試圖理解DTU與資源對我來說也是一個絆腳石。點擊您的資源利用率圖表,然後點擊編輯default resource chart

然後您會看到一個滑塊,其中包含大量可以監視的資源。選擇會話和工作人員百分比。這些都可能是你的問題之一。如果不是,則可以添加:CPU,數據IO,日誌IO和/或內存中OLTP百分比。點擊確定。現在

Resource options

,你會發現在你的查詢或查詢的實際成本。瞭解你的查詢如何消耗不同的資源可以幫助你解決像這樣的性能問題。我在做大插入時學到了這一點,我正在使我的Log IO最大化,其他所有事情都是利用率爲5%。

嘗試一下,如果你對連接池是正確的,不幸的是這將意味着在應用程序中進行一些重構。至少,使用這個將會給你更多的見解,而不僅僅是看DTU的百分比!

+0

謝謝,那肯定是值得看的! – user1957687

+0

ive將圖像添加到我的原始答案中,這對你來說看起來有什麼不對嗎?我猜這些工人的人數稍高/ – user1957687

+0

由於你的原始症狀,你的工人和工作人員沒有我預期的那麼高。您是否可以在其中一個高峯期間收集其他百分比(CPU,Data IO和Log IO)的其他圖像?根據最後一幅圖像,其中一個應該接近93.23%。一旦找到最高資源,我們就有辦法進一步排除故障! –