Moait
홈인기 피드모든 블로그모든 태그
홈인기 피드모든 블로그모든 태그
StarRocks 운영기: Resource Group으로 멀티테넌트 워크로드 격리하기 섬네일

StarRocks 운영기: Resource Group으로 멀티테넌트 워크로드 격리하기

토스 favicon토스·DevOps·
DockerStarRocksResource GroupCPU WeightExclusive CPU Cores
2026년 04월 23일0

AI 요약

이 글은 AI가 요약했어요. 정확한 내용은 꼭 원문을 확인해 주세요!

핵심 요약

토스는 StarRocks의 Resource Group과 CPU 우선순위 설계를 도입해 멀티테넌트 워크로드를 격리하고, Docker 환경에서 cpuset/bind_cpus/cpu_borrowing 체인을 적용해 SLA를 보호한 운영 사례를 공유한다.

구현 방법

  • 워크로드 분류와 CPU 우선순위 설계: cpu_weight 기본값으로 경합 시 비율 분배, 필요 시 exclusive_cpu_cores로 하드 격리하고 DriverExecutor/ScanExecutor/ConnectorScanExecutor의 3벌 ThreadPool을 분리 운영한다.
  • Classifier와 Docker 기반 운영: 쿼리를 user/db 기반으로 매칭하는 Classifier를 도입하고, Docker에서 cpuset_cpus, cpus, cpu_borrowing 체인을 구성하며 Ansible 템플릿으로 배포한다.
  • 메모리/쿼리 제어 및 모니터링: mem_limit과 spill_mem_limit_threshold로 메모리 제어, big_query 제한으로 급격한 쿼리 폭주를 차단한다. AuditLoader로 쿼리 이력을 Kafka로 수집해 Grafana로 모니터링한다.

주요 결과

  • SLA 보호 및 응답 시간 안정화: shopping_service에 exclusive_cpu_cores 도입 후 서비스 쿼리 응답 편차가 줄어들고, 24h 서비스 클러스터 약 69 qps, 1주 약 87 qps로 나타났으며, 모니터링/배치형 클러스터는 24h 약 20 qps를 처리했다.
  • Borrowing의 효과와 한계: idle 시 다른 그룹이 코어를 빌려 쓸 수 있지만, Docker의 cpuset 설정과 bind_cpus 활성 여부에 따라 실제 동작이 달라진다. 특정 상황에서 yield 타임이 달라져 주의가 필요하다.
  • 메모리 경합 관리의 중요성: mem_limit 합계가 100%를 초과할 수 있어 spill이 발생할 수 있으며, mem_pool 도입 시 합계 관리 부담을 줄일 수 있다.

연관 피드

%가 높을수록 이 글과 비슷할 가능성이 높아요!
고객은 절대 기다려주지 않는다: 빠른 데이터 서빙으로 고객 만족도를 수직 상승 시키는 법 섬네일
73%

고객은 절대 기다려주지 않는다: 빠른 데이터 서빙으로 고객 만족도를 수직 상승 시키는 법

토스 favicon토스·2025년 12월 16일
리멤버앤컴퍼니의 Amazon S3 Tables를 활용한 실시간 분석 워크로드 구축하기 2부: S3 Tables를 프로덕션 환경에서 운영하기 섬네일
72%

리멤버앤컴퍼니의 Amazon S3 Tables를 활용한 실시간 분석 워크로드 구축하기 2부: S3 Tables를 프로덕션 환경에서 운영하기

AWS faviconAWS·2025년 10월 29일
Apache Flink + RocksDB 튜닝으로 광고 Frequency Capping 실시간 집계를 일주일까지 확장하기 섬네일
70%

Apache Flink + RocksDB 튜닝으로 광고 Frequency Capping 실시간 집계를 일주일까지 확장하기

토스 favicon토스·2026년 04월 16일