背景簡介: - 我們有一個SAAS解決方案,包含以下主要組件。 1.我們有一個Web門戶後端,管理員可以在其中編輯數據。 2.我們有一個由移動設備調用的Web API。移動設備跟蹤或報告學生閱讀進度Azure碰撞數據庫cpu的限制太容易了
到目前爲止,該解決方案已託管在虛擬服務器上。 現在我們正在將解決方案遷移到Azure框架,以便我們可以利用彈性數據庫池的可伸縮性。 我們正在使用事件主題來處理來自移動設備的大量帖子,當帖子可以異步處理時, ,但有一些帖子需要同步處理,並且我們發現Azure的面料在涉及多個併發連接。
問題的例子: -
所以當Azure中運行類似以下的查詢: -
SELECT q.Category, COUNT(*)
FROM Question q
JOIN Answer a
ON a.QuestionId = q.QuestionId
GROUP BY q.Category
ORDER BY q.Category
的SQL CPU的峯值97%以上,在所有的下列情況: -
1. DTU爲50,並有多個併發呼叫。
2. DTU是1500,並有5個或更多併發呼叫。
3. DTU是4000,並有20個或更多的併發呼叫。
因此,我們向微軟公司打了一個支持電話。 我們花了超過一週的時間從sql統計數據和索引到web api定價層。 畢竟,我們仍然拿出了上述情況下CPU在SQL數據庫中達到峯值的證據。
這導致了不可避免的「重寫大系統」這種爭論。
所以潛在的問題是彈性數據庫池似乎無法在標準SQL數據庫的能力附近執行任何操作。另外,獨立數據庫的性能似乎與虛擬服務器的性能無關。
這非常令人沮喪,因爲爲了保持性能和增加可伸縮性,推薦使用彈性數據庫池。 我們目前在一臺虛擬服務器上運行700多個客戶;並期望爲每個客戶創建一個分片數據庫。 這個想法是我們可以從數百個客戶擴展到數以萬計的客戶。 實際上,我們正努力讓Azure結構在我們擁有的虛擬服務器性能附近進行。 所以這個問題就是問有沒有人有足夠的經驗讓Azure以合理的速度執行非平凡的任務? (最好不用重新編寫大塊的系統)
有沒有?在你的問題上標記。清理它或它會關閉。 – Paparazzi
從單個數據庫實例遷移到池並不總是提升和轉換。您必須考慮當前如何處理數據相關路由。那麼你必須考慮你的數據庫連接的連接範圍(主控制器與租戶連接)。如果MS建議重新編寫大量的應用程序,他們可能會發現一些您可能尚未準備好進行彈性縮放的區域。如果您想將問題分解爲單元,我很樂意回答如何從一個實例遷移到多個實例。 –
謝謝@ShannonLowder,我意識到你是對的。 我希望重構不是必需的,但我現在已經接受它是不可避免的。 –