簡體   English   中英

Azure DocumentDB受限制的請求

[英]Azure DocumentDB Throttled Requests

我在Azure上有一個文檔數據庫數據庫。 當我存檔用戶記錄及其所有數據時,我會遇到一個特別繁重的查詢。

我正在執行S1計划,並且會遇到一個異常,表明我已達到RU / s的極限。 S1計划有250個。

我決定切換到“標准”計划,該計划可讓您設置RU / s並為此付費。

我將其設置為500 RU / s。

我進行了相同的查詢,然后回頭查看了監視圖表。

在我進行此最新查詢測試時,它說我做了226個請求,其中有10個受到限制。

這是為什么? 我將其設置為500 RU / s。 順便說一下,查詢失敗了。

首先,請求!=請求單位,因此您的226個請求將在某一點上導致在一秒鍾內需要500個以上的請求單位。

DocumentDb API會告訴您每個請求要花費多少RU,因此您可以檢查該客戶端以找出哪個請求導致了問題。 根據我的經驗,即使是一個簡單的id請求通常也至少要花費幾個RU。 您如何看待成本取決於您使用哪個客戶端SDK。 在我的代碼中,我添加了一些內容來自動記錄所有花費超過10 RU的請求,以使我知道並可以采取措施。

同樣,門戶中的監視工具還很不足,我知道團隊正在為此進行工作。 您只能每隔五分鍾查看一次RU總數,但是您可能嘗試在一秒鍾內使用600 RU,而您在門戶網站上看不到它。

在您的情況下,您可能只用一個大型查詢,而該查詢的成本就超過500 RU-日志記錄會告訴您。 在這種情況下,請查看生成的SQL以了解原因,甚至可以將其發布在此處。

或者,這可能是在較小的時間窗口內觸發許多小請求的累積效果。 如果您要響應一個用戶操作執行226個請求(並且我不知道您是否這樣做),那么您可能想重新考慮您的設計:)

最后,您可以重試失敗的請求。 我不確定其他SDK,但是.Net SDK在放棄之前會自動重試9次請求(這可能是229個請求到達服務器的另一種解釋)。 如果您選擇的SDK不重試,則您可以輕松地自己完成; 服務器將返回一個特定的狀態代碼(我認為是429,但不太記得)以及有關重試之前要等待多長時間的指令。

請檢查查詢並更新您的問題,以便我們提供進一步的幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM