Azure DevOps Services
Azure DevOps Services는 다중 테넌시를 사용하여 비용을 절감하고 성능을 향상시킵니다. 이 디자인은 공유 리소스의 다른 사용자가 사용량이 급증할 때 성능 문제 또는 중단을 일으킬 수 있습니다. 이를 방지하기 위해 Azure DevOps는 각 사용자가 사용할 수 있는 리소스와 특정 명령에 대해 수행할 수 있는 요청 수를 제한합니다. 이러한 제한을 초과하면 향후 요청이 지연되거나 차단될 수 있습니다.
속도 제한에 도달하지 않도록Git 제한 및 모범 사례에 대해 자세히 알아보세요.
전역 사용량 제한
Azure DevOps에는 공유 리소스가 과부하될 위험이 있는 경우 개별 사용자의 요청을 지연시키는 전역 소비 한도가 있습니다. 이 제한은 공유 리소스가 과부하에 가까운 경우 중단을 방지하는 데 도움이 됩니다. 개별 사용자는 일반적으로 다음 인시던트 중 하나가 발생하는 경우에만 지연된 요청을 경험합니다.
- 공유 리소스 중 하나는 과부하될 위험이 있습니다.
- 개인 사용량은 슬라이딩 5분 기간 내에 일반 사용자의 소비량의 200배를 초과합니다.
지연은 사용자의 지속적인 사용 수준에 따라 달라집니다. 지연 범위는 요청당 몇 밀리초에서 최대 30초까지입니다. 소비량이 0으로 떨어지거나 리소스가 과부하되지 않으면 지연이 5분 이내에 중지됩니다. 소비량이 높게 유지되면 리소스를 보호하기 위해 지연이 무기한 지속될 수 있습니다.
사용자 요청이 상당량 지연되면 사용자는 웹에서 전자 메일 및 경고 배너를 받습니다. 빌드 서비스 계정 및 전자 메일 주소가 없는 다른 사용자의 경우 Project Collection Administrators 그룹의 구성원이 전자 메일을 받습니다. 자세한 내용은 사용량 모니터링을 참조하세요.
개별 사용자의 요청이 차단되면 사용자는 HTTP 코드 429(요청이 너무 많음) 및 다음과 유사한 메시지를 사용하여 응답을 받습니다.
TF400733: The request has been canceled: Request was blocked due to exceeding usage of resource <resource name> in namespace <namespace ID>.
Azure DevOps 처리량 단위
Azure DevOps 사용자는 많은 공유 리소스를 사용하며 사용 수준은 다음과 같은 요인에 따라 달라집니다.
- 많은 수의 파일을 버전 제어에 업로드하여 데이터베이스 및 스토리지 계정에 로드합니다.
- 복잡한 작업 항목 쿼리를 실행하면 검색되는 작업 항목 수에 따라 데이터베이스 부하가 증가합니다.
- 버전 제어에서 파일을 다운로드하고 로그 출력을 생성하는 빌드를 실행합니다.
- 서비스의 여러 부분에서 CPU 및 메모리를 사용하는 일반 작업입니다.
이 작업을 측정하기 위해 Azure DevOps는 Azure DevOps TTU(처리량 단위)로 리소스 소비를 표현합니다. TSTU는 다음을 비롯한 다양한 리소스의 혼합을 나타내는 추상 로드 단위입니다.
- 데이터베이스 사용량 - 주로 Azure SQL Database DTU를 통해 측정됩니다.
- 컴퓨팅 사용량 - 애플리케이션 계층 및 작업 에이전트의 CPU, 메모리 및 I/O입니다.
- 스토리지 사용량 - Azure Storage 대역폭.
비고
TSTU는 의도적으로 추상적입니다. 분산 인프라 내의 컴퓨팅, 스토리지 및 데이터베이스 계층에서 리소스 소비를 집계합니다. 기본 메트릭(CPU, 메모리, I/O, DTU)은 직접 노출되거나 의미가 없습니다. TSTU는 부하를 나타내는 통합된 방법을 제공하므로 개별 리소스 구성 요소의 전체 복잡성을 노출하지 않고도 사용량을 보다 쉽게 관리하고 모니터링할 수 있습니다. 수식을 사용하여 작업에 대한 TSTU의 사용량을 계산할 수는 없지만 사용 량 모니터링 페이지에서 작업에서 사용하는 TSTU 수를 확인할 수 있습니다. 작업 항목 쿼리와 같은 일부 작업은 조직이 성장하고 변경됨에 따라 사용량이 달라지므로 정확한 상태를 유지하기 위해 주기적으로 벤치마킹해야 할 수 있습니다.
현재 TSTU는 주로 Azure SQL Database DTU에 초점을 맞추고 있습니다. 데이터베이스는 과도한 소비로 인해 압도될 가능성이 가장 높은 공유 리소스이기 때문입니다.
- 하나의 TSTU는 일반적인 Azure DevOps 사용자가 5분 동안 생성한 평균 부하를 나타냅니다.
- 일반적인 사용자 활동은 5분당 10TTU 이하의 급증을 생성할 수 있습니다.
- 더 크지만 빈도가 낮은 스파이크는 최대 100 TSTU에 도달할 수 있습니다.
- 전역 제한은 모든 슬라이딩 5분 기간 내에 200 TSTU입니다.
모범 사례
- Retry-After 헤더를 준수하십시오: 응답에서 이를 받으면 다른 요청을 보내기 전에 지정된 시간 동안 기다리십시오. 응답은 여전히 HTTP 200을 반환하므로 재시도 논리는 필요하지 않습니다.
- X-RateLimit 헤더 모니터링: 사용 가능한 경우
X-RateLimit-Remaining
및X-RateLimit-Limit
을 추적하여 임계값에 얼마나 빠르게 접근하고 있는지를 대략적으로 파악합니다. 이렇게 하면 클라이언트가 요청 버스트를 원활하게 처리하고 강제 지연을 방지할 수 있습니다.
비고
도구 및 애플리케이션에서 Azure DevOps와 통합하는 데 사용하는 ID는 때때로 허용된 사용량 한도를 초과하는 더 높은 속도 및 사용량 제한이 필요할 수 있습니다. 애플리케이션에서 사용하는 ID에 기본 + 테스트 계획 액세스 수준을 할당하여 이러한 제한을 늘입니다. 더 이상 더 높은 속도 제한이 필요하지 않으면 이전 액세스 수준으로 되돌려야 합니다. ID에 할당된 기간에 대해서만 기본 + 테스트 계획 액세스 수준에 대한 요금이 청구됩니다. 이미 Visual Studio Enterprise 구독이 할당된 ID는 구독을 제거할 때까지 기본 + 테스트 계획 액세스 수준을 할당할 수 없습니다.
파이프라인
속도 제한은 Azure Pipelines에서 동일한 방식으로 작동합니다. 각 파이프라인은 개별 엔터티이며 해당 리소스 사용량은 별도로 추적됩니다. 빌드 에이전트가 자체 호스팅되더라도 로그를 복제하고 전송하여 부하를 생성합니다.
슬라이딩 5분 창에는 각 파이프라인에 대해 200TSTU 제한이 있습니다. 이 제한은 사용자의 전역 소비 한도와 일치합니다. 속도 제한으로 파이프라인이 지연되거나 차단되는 경우 연결된 로그에 메시지가 표시됩니다.
API 클라이언트 환경
요청이 지연되거나 차단되면 Azure DevOps는 API 클라이언트가 반응할 수 있도록 응답 헤더를 반환합니다. 완전히 표준화되지는 않았지만 이러한 헤더는 다른 인기 있는 서비스 따라 광범위하게.
다음 표에서는 사용 가능한 헤더와 해당 헤더의 의미를 나열합니다.
단 X-RateLimit-Delay
, 요청이 지연되기 전에 이러한 모든 헤더가 전송됩니다.
이 디자인을 통해 클라이언트는 요청 속도를 사전에 늦출 수 있습니다.
헤더 이름
설명
'다시 시도- 도달한 임계값의 서비스 및 유형을 보여 주는 사용자 지정 헤더입니다. 임계값 유형 및 서비스 이름은 시간에 따라 달라질 수 있으며 경고 없이도 달라질 수 있습니다. 이 문자열을 인간에게 표시하지만 계산에 의존하지 마세요.
X-RateLimit-Delay
요청이 지연되는 기간입니다. 단위: 소수 자릿수가 최대 3개인 초(밀리초)입니다.
X-RateLimit-Limit
지연이 부과되기 전에 허용되는 총 TTU 수입니다.
X-RateLimit-Remaining
지연이 시작되기 전에 남은 TSTU의 수입니다. 요청이 이미 지연되거나 차단된 경우 0입니다.
X-RateLimit-Reset
모든 리소스 사용량이 즉시 중지되면 추적된 사용량이 0TTU로 반환되는 시간입니다. Unix epoch로 시간 표현됩니다.
작업 추적, 프로세스, 프로젝트 제한
Azure DevOps는 조직에서 가질 수 있는 프로젝트 수와 각 프로젝트에 포함할 수 있는 팀 수를 제한합니다. 작업 항목, 쿼리, 백로그, 보드, 대시보드 등에 대한 제한도 있습니다. 자세한 내용은 작업 추적, 프로세스 및 프로젝트 제한을 참조하세요.
위키
일반적인 리포지토리 제한 외에도 프로젝트의 Wiki 파일은 최대 25MB가 될 수 있습니다.
서비스 연결
서비스 연결을 만드는 데에는 프로젝트당 제한이 없습니다. 그러나 Microsoft Entra ID를 통해 제한이 부과될 수 있습니다. 자세한 내용은 다음 문서를 참조하세요.
- Microsoft Entra 서비스 제한 및 한계
- Azure 구독 및 서비스 제한, 할당량 및 제약 조건