StarRocks 운영기: Resource Group으로 멀티테넌트 워크로드 격리하기
이유진 토스 · 토스 기술 블로그
AI 핵심 요약
서비스 조회와 배치·적재·대시보드 쿼리가 StarRocks 클러스터를 공유하면서 서비스 응답이 밀리자, 토스 DOP 팀은 워크로드를 분류하고 CPU 우선순위를 설계했습니다. 기본은 경합 시 CPU를 비율대로 나누는 cpu_weight로 두고, 서비스 SLA 보호나 과도한 적재 제한이 필요할 때 exclusive_cpu_cores를 적용했으며, 메모리·동시성·폭주 쿼리에는 별도 제한을 더했습니다. 운영 과정에서 Classifier의 매칭 우선순위, Docker의 cpuset과 bind_cpus 및 CPU borrowing 간 의존성, 이종 스펙 노드의 코어 상한을 확인하고 쿼리 이력으로 동작을 검증했습니다. Resource Group은 워크로드 간 간섭을 줄이는 수단이지 용량 증설을 대신하지 않으므로, 총부하가 클러스터 한계에 가까우면 물리적 분리나 증설이 필요하다는 점을 강조합니다.
- CPU 경합이 주된 문제라면 cpu_weight로 시작하고, SLA가 여전히 흔들릴 때 exclusive_cpu_cores를 검토하세요.
- Classifier는 매칭 점수에서 db 조건의 영향이 크므로, user 기반과 db 기반 규칙이 겹치지 않도록 설계하세요.
- concurrency_limit은 동시 쿼리를 큐에 넣고, big_query 제한은 노드별 기준을 넘긴 개별 쿼리를 종료합니다.
- Docker에서 CPU 바인딩과 코어 대여를 쓰려면 cpuset-cpus, enable_resource_group_bind_cpus, borrowing 설정의 의존 관계를 확인하세요.
- pendingTimeMs와 쿼리 이력의 상태·리소스 그룹 필드를 모니터링해 설정이 실제로 적용되는지 검증하세요.
소개
서비스 쿼리가 밀리기 시작했을 때, 우리가 선택한 격리 전략
비슷한 학습 자료
컨퍼런스 SLASH
토스ㅣSLASH 24 - Kubernetes CPU 알뜰하게 사용하기
컨퍼런스 SLASH
서버를 증설하지 않으면서 트래픽을 2배 이상 받으려면 어떻게 해야 할까요? Kubernetes 환경에서 CPU를 최적화한 경험을 나눕니다. 김동석 / DevOps Team Leader 이재성 / DevOps Team Leader 토스 개발자 컨퍼런스 SLASH에 대한 자세한 정보는 👉🏻 https://toss.im/slash-24 컨퍼런스 및 세션에 대한 문의는 👉🏻 slash@toss.im 토스에 합류하고 싶다면 👉🏻 https://toss.im/career/jobs #토스 #개발자컨퍼런스 #SLASH #SLASH24 #devops #kubernetes #토스뱅크 유의 사항 *본 발표자료의 저작권은 연사에 있으며, 저작권자의 사전 서면 동의 없이 자료의 일부 또는 전부를 이용하거나 배포할 수 없습니다. *또한 해당 자료를 복제하여 SLASH 행사 홈페이지를 제외한 온라인상에 게재하는 행위는 연사가 동의한 저작권 및 배포전송권에 위배됩니다. *토스가 다루는 모...
데브옵스 · 인프라
문서 장재영/김진웅
토스증권이 GPU-aware를 넘어 GPU-native 클러스터를 구축한 방법
문서 정진우/문현경