
백엔드
StarRocks 운영기: Resource Group으로 멀티테넌트 워크로드 격리하기
두줄요약
StarRocks에서 Resource Group으로 멀티테넌트 워크로드를 분류하고 CPU 우선순위를 조절한 운영 경험을 정리했습니다. 서비스 SLA가 필요한 경우에는 exclusive_cpu_cores와 주의점을 함께 적용했습니다.
문제 상황
- StarRocks 단일 클러스터에 서비스 조회, 배치 적재, 대시보드 조회 등 성격이 다른 워크로드가 공존하며 쿼리 지연 발생
- 평균 QPS보다 동시간대 경합 시 어떤 쿼리를 먼저 보호할지 운영 핵심 과제로 부상
해결 방법
- Resource Group으로 워크로드를 서비스/배치/모니터링 계열로 분류하고 cpu_weight로 상대 우선순위 조절
- SLA가 엄격한 서비스 쿼리는 exclusive_cpu_cores로 전용 코어를 할당해 하드 격리 적용
- concurrency_limit, big_query 제한, mem_limit으로 동시성·폭주 쿼리·메모리 사용까지 제어
주의할 점
- Classifier는 user 또는 db 기준으로 설계해야 매칭 충돌을 줄일 수 있음
- Docker 환경에서는 cpuset-cpus와 enable_resource_group_bind_cpus, borrowing 의존 관계를 함께 고려해야 함
- exclusive_cpu_cores 상한은 이종 스펙 노드에서 가장 작은 코어 수에 의해 제한됨