Udostępnij za pośrednictwem


Limity szybkości i użycia

Azure DevOps Services

Usługa Azure DevOps Services korzysta z wielu dzierżaw w celu zmniejszenia kosztów i zwiększenia wydajności. Ten projekt pozostawia użytkownikom podatnym na problemy z wydajnością, a nawet awarie, gdy inni użytkownicy swoich udostępnionych zasobów mają wzrost użycia. Dlatego usługa Azure DevOps ogranicza zasoby, z których mogą korzystać osoby, oraz ilość żądań, które mogą wykonywać w przypadku określonych poleceń. Po przekroczeniu tych limitów przyszłe żądania mogą być opóźnione lub zablokowane.

Aby uzyskać więcej informacji, zobacz Limity usługi Git i Najlepsze rozwiązania, aby uniknąć osiągnięcia limitów szybkości.

Globalny limit użycia

Usługa Azure DevOps ma obecnie globalny limit zużycia, który opóźnia żądania od poszczególnych użytkowników poza próg, gdy zasoby udostępnione są zagrożone przeciążonym. Ten limit koncentruje się wyłącznie na unikaniu awarii, gdy udostępnione zasoby są bliskie przeciążenia. Użytkownicy indywidualni zazwyczaj otrzymują opóźnione żądania tylko wtedy, gdy wystąpi jedno z następujących zdarzeń:

  • Jednym z ich udostępnionych zasobów jest ryzyko przeciążenia
  • Ich użycie osobiste przekracza 200 razy zużycie typowego użytkownika w ramach (przesuwanego) pięciominutowego okna

Ilość opóźnienia zależy od trwałego poziomu zużycia przez użytkownika. Opóźnienia wahają się od kilku milisekund na żądanie do 30 sekund. Po zużyciu do zera lub zasób nie jest już przytłoczony, opóźnienia zatrzymają się w ciągu pięciu minut. Jeśli zużycie pozostanie wysokie, opóźnienia mogą trwać w nieskończoność, aby chronić zasób.

Gdy żądanie użytkownika zostanie opóźnione o znaczną kwotę, użytkownik otrzyma wiadomość e-mail i baner ostrzegawczy w Internecie. W przypadku konta usługi kompilacji i innych osób bez adresu e-mail członkowie grupy Project Collection Administracja istrators otrzymają wiadomość e-mail. Aby uzyskać więcej informacji, zobacz Monitorowanie sposobu użycia.

Gdy żądania poszczególnych użytkowników zostaną zablokowane, odpowiedzi z kodem HTTP 429 (zbyt wiele żądań) są odbierane z komunikatem podobnym do następującego:

TF400733: The request has been canceled: Request was blocked due to exceeding usage of resource <resource name> in namespace <namespace ID>.

Jednostki przepływności usługi Azure DevOps (TSTU)

Użytkownicy usługi Azure DevOps zużywają wiele udostępnionych zasobów, a użycie zależy od następujących czynników:

  • Przekazywanie dużej liczby plików do kontroli wersji powoduje duże obciążenie baz danych i kont magazynu
  • Złożone zapytania śledzenia elementów roboczych tworzą obciążenie bazy danych na podstawie liczby elementów roboczych, które przeszukują
  • Kompiluje obciążenie dysku przez pobieranie plików z kontroli wersji, generowanie danych wyjściowych dziennika
  • Wszystkie operacje zużywają procesor CPU i pamięć w różnych częściach usługi

Aby dostosować się do tego celu, użycie zasobów usługi Azure DevOps jest wyrażane w jednostkach abstrakcyjnych nazywanych jednostkami przepływności usługi Azure DevOps lub jednostkami TSTU. Jednostki TSTU ostatecznie zawierają mieszankę następujących elementów:

  • Jednostki DTU usługi Azure SQL Database jako miara zużycia bazy danych
  • Warstwa aplikacji i agent zadań — procesor CPU, pamięć i we/wy jako miara zużycia zasobów obliczeniowych
  • Przepustowość usługi Azure Storage jako miara zużycia magazynu

Na razie jednostki TSTU koncentrują się głównie na jednostkach DTU usługi Azure SQL Database, ponieważ bazy danych Azure SQL Database są zasobami udostępnionymi najczęściej przytłoczonymi nadmiernym zużyciem. Pojedynczy TSTU to średnie obciążenie, które oczekujemy od jednego normalnego użytkownika usługi Azure DevOps do wygenerowania na pięć minut. Normalni użytkownicy generują również skoki obciążenia. Te skoki są zwykle 10 lub mniej TSTU na pięć minut. Rzadziej skoki idą tak wysokie, jak 100 TSTU.

Globalny limit zużycia wynosi 200 jednostek TSTU w ciągu przesuwanego pięciominutowego okna.

Zalecamy, aby co najmniej odpowiedzieć na Retry-After nagłówek. Jeśli wykryjesz Retry-After nagłówek w dowolnej odpowiedzi, poczekaj, aż jakiś czas minie, zanim wyślesz kolejne żądanie. Dzięki temu aplikacja kliencka ma mniej wymuszonych opóźnień. Pamiętaj, że odpowiedź to 200, więc nie trzeba stosować logiki ponawiania prób do żądania.

Jeśli to możliwe, zalecamy dalsze monitorowanie X-RateLimit-Remaining i X-RateLimit-Limit nagłówki. Pozwala to przybliżyć szybkość zbliżania się do progu opóźnienia. Klient może inteligentnie reagować i rozpowszechniać swoje żądania w czasie.

Uwaga

Tożsamości, które są używane przez narzędzia i aplikacje do integracji z usługą Azure DevOps, mogą wymagać wyższych limitów szybkości i użycia poza dozwolonym limitem użycia od czasu do czasu. Możesz uzyskać dodatkowe limity szybkości i użycia, przypisując poziom dostępu Podstawowe i testowe plany do żądanych tożsamości używanych przez aplikację. Po spełnieniu zapotrzebowania na wyższe limity szybkości można wrócić do poziomu dostępu używanego przez tożsamość. Opłaty są naliczane za koszt poziomu dostępu Podstawowe i plany testowe tylko za czas przypisywany do tożsamości.

Tożsamości, które zostały już przypisane do subskrypcji programu Visual Studio Enterprise, nie można przypisać poziomu dostępu Podstawowe i plany testów, dopóki nie zostaną usunięte.

Pipelines

Ograniczanie szybkości jest podobne dla usługi Azure Pipelines. Każdy potok jest traktowany jako jednostka indywidualna ze śledzonym użyciem zasobów. Nawet jeśli agenci kompilacji są samodzielnie hostowani, generują obciążenie w postaci klonowania i wysyłania dzienników.

Stosujemy limit 200 TSTU dla pojedynczego potoku w przesuwanym 5-minutowym oknie. Ten limit jest taki sam jak globalny limit zużycia dla użytkowników. Jeśli potok zostanie opóźniony lub zablokowany przez ograniczenie szybkości, w dołączonych dziennikach pojawi się komunikat.

Środowisko klienta interfejsu API

Gdy żądania są opóźnione lub blokowane, usługa Azure DevOps zwraca nagłówki odpowiedzi, aby ułatwić klientom interfejsu API reagowanie. Chociaż nie są w pełni ustandaryzowane, nagłówki te są zasadniczo zgodne z innymi popularnymi usługami.

W poniższej tabeli wymieniono dostępne nagłówki i ich znaczenie. Z wyjątkiem , X-RateLimit-Delaywszystkie te nagłówki są wysyłane przed rozpoczęciem opóźniania żądań. Ten projekt daje klientom możliwość aktywnego spowolnienia szybkości żądań.

Nazwa nagłówka

Opis


Retry-After

Wysłany nagłówek RFC 6585 informuje o tym, jak długo będzie czekać przed wysłaniem następnego żądania, aby spaść poniżej progu wykrywania. Jednostki: sekundy.


X-RateLimit-Resource

Nagłówek niestandardowy wskazujący usługę i typ progu, który został osiągnięty. Typy progów i nazwy usług mogą się różnić w czasie i bez ostrzeżenia. Zalecamy wyświetlenie tego ciągu dla człowieka, ale nie poleganie na nim na obliczeniach.


X-RateLimit-Delay

Jak długo żądanie zostało opóźnione. Jednostki: sekundy z maksymalnie trzema miejscami dziesiętnymi (milisekundy).


X-RateLimit-Limit

Całkowita liczba dozwolonych jednostek TSTU przed nałożeniem opóźnień.


X-RateLimit-Remaining

Liczba pozostałych jednostek TSTU przed opóźnieniem. Jeśli żądania są już opóźnione lub zablokowane, jest to 0.


X-RateLimit-Reset

Czas, w którym wszystkie zużycie zasobów zostanie natychmiast zatrzymane, śledzone użycie powróci do 0 jednostek TSTU. Wyrażone w czasie epoki unix.


Śledzenie pracy, przetwarzanie i limity projektów

Usługa Azure DevOps nakłada limity dla liczby projektów, które można znaleźć w organizacji, oraz liczbę zespołów, które można mieć w każdym projekcie. Należy również pamiętać o limitach elementów roboczych, zapytań, list prac, tablic, pulpitów nawigacyjnych i nie tylko. Aby uzyskać więcej informacji, zobacz Śledzenie pracy, proces i limity projektów.

Witryna Wiki

Oprócz zwykłych limitów repozytorium witryny typu wiki zdefiniowane dla projektu są ograniczone do 25 MB na pojedynczy plik.

Połączenia z usługą

Nie ma żadnych limitów dla poszczególnych projektów dotyczących tworzenia połączeń usług. Mogą jednak istnieć limity, które są nakładane za pośrednictwem identyfikatora Entra firmy Microsoft. Aby uzyskać dodatkowe informacje, zapoznaj się z następującymi artykułami: