최종 수정: 에
워크로드 관리 개요: 리소스 격리, 스로틀링 및 서킷 브레이킹
Doris의 워크로드 관리 기능은 여러 테넌트나 비즈니스 부문이 하나의 클러스터를 공유할 때 발생하는 리소스 경합을 해결합니다. 워크로드 관리 정책을 적절히 구성하면 리소스를 격리하고, 쿼리가 클러스터에 과부하를 일으키는 것을 방지하며, 비즈니스 SLA를 보장할 수 있습니다.
핵심 기능은 다음 세 가지 영역을 다룹니다.
- 리소스 격리: 클러스터 리소스(CPU, 메모리, IO)를 여러 그룹으로 나누어 서로 다른 사용자와 비즈니스 부문이 서로 영향을 주지 않도록 합니다.
- 동시성 제어 및 큐잉: 클러스터에서 동시에 실행하는 작업 수를 제한합니다. 임계값을 초과하면 새 작업을 자동으로 큐에 넣어 동시 실행 작업이 갑자기 늘어나 시스템에 과부하가 발생하는 것을 방지합니다.
- 서킷 브레이킹: 쿼리 계획 수립 단계나 실행 중에 스캔한 데이터 양, 할당된 메모리, 실행 시간 등의 조건에 따라 비정상 작업을 자동으로 취소하여 단일 쿼리가 지나치게 많은 리소스를 소비하지 않도록 합니다.
리소스 분할 방식
Doris는 배포 모드와 격리 요구 사항에 따라 세 가지 리소스 그룹화 방식을 제공합니다.
| 리소스 격리 방식 | 격리 단위 | 소프트/하드 제한 | 그룹 간 쿼리 | 적용 시나리오 |
|---|---|---|---|---|
| Resource Group | 서버 노드 단위로 리소스를 완전히 격리하며, BE 장애의 영향도 격리 가능 | 하드 제한만 지원 | 지원하지 않음. 리소스 그룹 내에 하나 이상의 복제본이 저장되어 있어야 함 | 스토리지·컴퓨팅 통합 모드에서의 강력한 격리 |
| Workload Group | BE 프로세스 내부에서 격리하며, BE 장애의 영향은 격리할 수 없음 | 소프트 제한 + 하드 제한 | 지원 | 세밀한 리소스 할당, 급증하는 트래픽 제어 |
| Compute Group | 서버 노드 단위로 리소스를 완전히 격리하며, BE 장애의 영향도 격리 가능 | 하드 제한만 지원 | 지원하지 않음 | 스토리지·컴퓨팅 분리 모드에서의 강력한 격리 |
각 방식에 대한 자세한 설명은 다음과 같습니다.
- Resource Group: BE 노드를 최소 단위로 사용하며, 태그를 설정하여 클러스터를 여러 리소스 그룹으로 나눕니다. 스토리지·컴퓨팅 통합 모드에 적용됩니다.
- Workload Group: Cgroups를 통해 단일 BE 내부의 리소스를 더 세분화하여 프로세스 내에서 세밀하게 리소스를 할당할 수 있습니다.
- Compute Group: 스토리지·컴퓨팅 분리 모드의 리소스 그룹화 방식입니다. Resource Group과 마찬가지로 BE 노드를 최소 단위로 사용합니다.
소프트 제한과 하드 제한
하드 제한은 어떤 테넌트도 초과할 수 없는 리소스 사용량의 절대 상한입니다. 하드 제한에 도달하면 이를 초과하는 리소스 요청은 즉시 거부됩니다. 하드 제한은 클러스터 리소스 고갈이나 비즈니스 부문 간 리소스 경합을 방지하고 클러스터의 전반적인 안정성을 보장합니다.
소프트 제한은 일시적으로 초과할 수 있는 리소스 사용 상한입니다. 시스템에 여유가 있을 때는 테넌트가 다른 리소스 그룹의 유휴 리소스를 빌려 쓸 수 있습니다. 시스템이 바쁘고 리소스 경합이 발생하면 소프트 제한을 초과하는 요청은 추가 리소스를 확보할 수 없습니다. 소프트 제한은 일시적인 쿼리 급증이나 단기적인 데이터 수집량 증가처럼 트래픽이 급증하는 상황에 적합합니다.
리소스 분할 방식별로 지원하는 제한 모드는 다음과 같습니다.
| 분할 방식 | 소프트 제한 지원 | 하드 제한 지원 |
|---|---|---|
| Resource Group | 아니요 | 예 |
| Workload Group | 예 | 예 |
| Compute Group | 아니요 | 예 |
관련 문서
- Resource Group - 노드 태그 기반 리소스 그룹화 구성
- Workload Group - Cgroups 기반 프로세스 내 리소스 그룹화 구성
- Compute Group - 스토리지·컴퓨팅 분리 모드의 리소스 그룹화 구성
- 동시성 제어 및 큐잉 - 쿼리 동시성 제한 및 큐 정책 구성
- 서킷 브레이킹 및 SQL 차단 - 쿼리 서킷 브레이킹 규칙 구성
- 워크로드 분석 및 진단 - 리소스 병목 현상 및 성능 문제 해결