Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Azure DevOps Services
Narzędzia i integracje między usługami zwiększają wydajność usług Azure DevOps Services. Jeśli nie jesteś ostrożny, zautomatyzowane narzędzia mogą wymknąć się spod kontroli i wysłać dużą liczbę żądań. Żądania mogą spowodować, że Azure DevOps nałoży limity szybkości
Wskazówka
Możesz użyć sztucznej inteligencji, aby pomóc w tym zadaniu w dalszej części tego artykułu lub zapoznać się z Włączenie pomocy dotyczącej sztucznej inteligencji przy użyciu serwera Azure DevOps MCP.
Wypychanie tylko wykonalnych elementów roboczych
Wypchnij tylko wykonywalne elementy do Azure DevOps, którymi zespół planuje zająć się lub rozwiązać w przyszłości. Zachowaj elementy robocze poza Azure DevOps, dopóki nie jest to konieczne. Na przykład nie próbuj przechowywać danych telemetrycznych w Azure DevOps.
Obsługa własnego magazynu danych
Nie dodawaj elementów roboczych do Azure DevOps ze względu na posiadanie ich wszystkich w jednym miejscu. Azure DevOps Services nie jest zaprojektowana jako usługa magazynu danych. Obsługa własnego magazynu danych.
Grupuj swoje zmiany
Wykonywanie pojedynczych operacji jest powolne i kosztowne, co jest główną przyczyną problemów z wydajnością i ograniczaniem szybkości. Zgrupuj swoje zmiany w jednym wywołaniu. Aby uzyskać więcej informacji, zobacz dokumentację Batch i przykładowy kod.
Ogranicz poprawki
Wiele poprawek w elemencie roboczym powoduje nadmiar i problemy z wydajnością. Zalecamy wykonywanie następujących zadań:
- Zmniejsz liczbę aktualizacji, grupując zmiany pól. Nie aktualizuj tylko jednego pola jednocześnie.
- Jeśli masz zmiany w wielu elementach roboczych, należy podzielić te zmiany na jedną akcję.
- Zachowaj minimalną liczbę poprawek, aby uniknąć limitów poprawek.
Uwaga
Limit poprawki elementu roboczego wynosi 10 000 dla aktualizacji wprowadzonych za pośrednictwem interfejsu API REST. Ten limit ogranicza aktualizacje z interfejsu API REST, ale nie ma to wpływu na aktualizacje z portalu internetowego.
Optymalizowanie zapytań
Zoptymalizuj zapytania, aby zwrócić niewielką liczbę wyników. Złożone warunki i filtry mogą prowadzić do długotrwałych zapytań. Zachowaj czas wykonywania zapytania poniżej 30 sekund, aby uniknąć błędów progowych.
Wskazówki dotyczące wydajności zapytań
- Umieść klauzulę daty lub zakresu w górnej części zapytania, jeśli jest to możliwe.
- Zmniejsz liczbę klauzul używających
Everoperatora . - Zmniejsz liczbę klauzul używających
Containsoperatora, z wyjątkiem tagów.- Użyj operatora
Contains Words, jeśli jest dostępny. - Nie używaj
Containsoperatora w długich polach tekstowych, ponieważ jest to kosztowne.
- Użyj operatora
- Unikaj operatorów
<>iNot, jeśli to możliwe. - Unikaj używania
In Groupoperatora dla dużych grup. - Zminimalizuj liczbę operatorów
Ori upewnij się, że przed użyciem nadal masz zakres najwyższego poziomu. - Unikaj używania klauzuli
ORmiędzy operatoremIn Groupa obszarem lub ścieżkami iteracji. - Zmniejsz liczbę ogólnych klauzul, aby osiągnąć cel, gdy jest to możliwe.
- Unikaj sortowania w innych polach niż podstawowe, takich jak
ID, jeśli to możliwe. - Użyj pola niestandardowego w filtrach, jeśli chcesz sortować według pola niestandardowego.
- Określ projekt, jeśli to możliwe. W przeciwnym razie zapytanie zostanie ograniczone do całej kolekcji i może trwać znacznie dłużej niż musi. Odznacz Query across projects w prawym górnym rogu edytora zapytań.
Wykonywanie zapytań między projektami
- Określ projekt, którego szukasz, jeśli zapytanie wymaga wyszukiwania w projektach.
- Jeśli to możliwe, użyj tagów zamiast słów kluczowych , chyba że szukasz częściowego tekstu ciągu.
Radzenie sobie z niepowodzeniami w sposób sprawny
Aktualizacje i zapytania kończą się niepowodzeniem, gdy limity zasobów lub częstotliwość wykorzystania przekraczają próg limitu. Na przykład zapytanie, które działa dłużej niż 30 sekund, zwraca następujący błąd:
VS402335: The timeout period (30 seconds) elapsed prior to completion of the query or the server is not responding.
Jeśli korzystasz z interfejsów API REST, upewnij się, że zaprojektujesz swój kod, aby odpowiednio radził sobie z błędami.
Ogranicz łącza
Aby uniknąć wymuszania limitów linków, należy jak to możliwe ograniczyć liczbę łączy na element roboczy.
Ważne
Planujemy wkrótce wymusić poprawki elementów roboczych i limity linków. Te limity są określane przez monitorowanie wydajności i opinie klientów.
Nie używaj zapytań do raportowania
Używanie zapytań i indywidualnych wywołań metody get work item to najlepszy sposób na egzekwowanie limitów szybkości w organizacji. Nie wykonuj zapytań, aby zwrócić obszerne listy elementów roboczych. Zamiast tego użyj interfejsów API REST do linków elementów roboczych i poprawek elementów roboczych.
Aby uzyskać więcej informacji, zobacz nasz przykład C# w witrynie GitHub.
Ulepszanie projektu integracji przy użyciu sztucznej inteligencji
Jeśli masz Azure DevOps MCP Server połączony z agentem sztucznej inteligencji w trybie agenta, możesz użyć monitów języka naturalnego, aby zaprojektować wydajne integracje.
| Zadanie | Przykładowy monit |
|---|---|
| Unikanie limitów szybkości | How do I design my Azure DevOps integration to avoid hitting rate limits when syncing thousands of work items? |
| Korzystanie z interfejsów API raportowania | Show me how to use the Azure DevOps reporting work item revisions API instead of individual queries for bulk data retrieval |
| Zaimplementuj buforowanie | Write code that caches Azure DevOps REST API responses to reduce redundant calls and stay within rate limits |
| Radzenie sobie z niepowodzeniami w sposób sprawny | Help me implement retry logic with exponential backoff for Azure DevOps REST API calls in C# |
| Projektowanie integracji webhooka | Show me how to set up Azure DevOps service hooks to push events instead of polling the REST API |
| Optymalizacja operacji wsadowych | What's the most efficient way to create many work items in Azure DevOps without exceeding rate limits? |
Uwaga
Tryb agenta i serwer MCP używają języka naturalnego, dzięki czemu można dostosować te komunikaty lub zadać dalsze pytania w celu uściślenia wyników.