Azure DevOps 服務
服務之間的工具和整合可提升 Azure DevOps Services 的效率。 如果您不小心,自動化工具可能會失控並執行大量的請求。 這些要求可能會導致 Azure DevOps 對您的組織強制執行 速率限制 。 為了協助您降低達到速率限制的風險,當您使用 REST API 與 Azure DevOps 整合時,請遵循這些最佳做法。
僅推送可執行的工作項目
只有將可行動的項目推送到 Azure DevOps 中,您的小組計劃在未來參與或處理。 將工作專案保持在 Azure DevOps 外,直到必要時才加入。 例如,請勿嘗試將遙測數據儲存在 Azure DevOps 中。
維護您自己的數據存放區
請勿將工作專案新增至 Azure DevOps,以便將它們全部放在單一位置。 Azure DevOps Services 並非設計為數據記憶體服務。 維護您自己的數據存放區。
將您的變更分批處理
執行單一作業的速度很慢且昂貴,這是效能問題和速率限制的主要原因。 將您的變更批處理成單次呼叫。 如需詳細資訊,請參閱我們的批次檔和範例程序代碼。
限制您的修訂
單一工作專案的許多修訂都會造成膨脹,並造成效能問題。 建議您執行下列工作:
- 將欄位變更進行批次處理,以減少更新次數。 不要一次只更新一個字段。
- 如果您有多個工作項目的變更,請將這些變更批處理成單一動作。
- 將修訂數目保持在最小值,以避免修訂限制。
備註
透過 REST API 進行的更新,每個工作項的修訂次數限制為 10,000 次。 此限制會限制來自 REST API 的更新,但入口網站中的更新不會受到影響。
最佳化查詢
將您的查詢優化,以傳回少量的結果。 複雜的條件和篩選可能會導致查詢執行時間過長。 將您的查詢運行時間保持在 30 秒以內,以避免閾值失敗。
查詢效能秘訣
- 盡可能將日期或範圍限制子句放在查詢頂端附近。
- 減少使用
Ever運算子句數目。 - 減少使用
Contains運算子句數目,但 Tags 除外。- 請在可用時使用
Contains Words運算符。 - 請勿在長文字欄位上使用
Contains運算子,因為它很耗費資源。
- 請在可用時使用
- 盡可能避免使用
<>和Not運算符。 - 避免針對大型群組使用
In Group運算符。 - 將運算子數目
Or降至最低,並確定您在使用之前仍具有最上層範圍。 - 避免使用
OR子句在In Group運算子與區域或迭代路徑之間。 - 盡可能減少整體句子的數量以達成目標。
- 盡可能避免在核心欄位(例如
ID)以外的欄位上進行排序。 - 如果您想要依自訂欄位排序,請在篩選中使用該自訂欄位。
- 可能的話,請指定專案。 否則,查詢的範圍會限定於整個集合,而且可能需要比它所需的時間長得多。 在查詢編輯器右上角取消核取「跨項目查詢」。
跨專案查詢
- 如果查詢需要跨項目搜尋,請指定您要尋找的專案。
- 除非您搜尋字串的部分文字,否則請盡可能使用 標籤 ,而不是 關鍵詞 。
優雅地處理失敗
當資源限制或使用率頻率超過限制閾值時,更新和查詢就會失敗。 例如,執行超過 30 秒的查詢會傳回下列錯誤:
VS402335: The timeout period (30 seconds) elapsed prior to completion of the query or the server is not responding.
當您取用 REST API 時,請務必設計程式代碼以適當地處理失敗。
限制您的連結
盡可能限制每個工作項目的連結數目,以避免強制執行連結限制。
這很重要
我們計劃儘快強制執行工作專案修訂和連結限制。 這些限制取決於效能監視和客戶意見反應。
請勿使用查詢來報告
使用查詢和個別 取得工作專案 呼叫是讓速率限制對貴組織生效的最佳方式。 請勿執行查詢以傳回大型工作項目清單。 請改用報告 工作項目連結 和 工作專案修訂 REST API。
如需詳細資訊,請參閱 GitHub 上的 C# 範例。