본문으로 건너뛰기

쓰로틀링

카프카에서는 복제본이 이동하는 파티션 재할당 작업에 쓰로틀링을 적용하여, 브로커 간에 복제본을 이동하는 데 사용하는 대역폭(bandWidth)의 상한을 설정할 수 있어요. 쓰로틀링은 데이터 복사나 이동 작업에서 초당 전송할 수 있는 데이터의 최대량을 제한하는 기술이에요.

예를 들어, Kafka에서 제공하는 bin/kafka-reassign-partitions.sh 스크립트를 사용하여 파티션을 재할당할 때, --throttle 옵션을 추가함으로써 데이터 이동 속도를 조절할 수 있어요. 만약 재할당 작업에 --throttle 50000000 옵션을 포함하여 실행하면, 이는 파티션 데이터가 초당 최대 50MB의 속도로만 이동할 수 있도록 조정돼요. 이런 방식으로, 데이터 이동 시 발생할 수 있는 과부하를 예방하며 시스템의 안정성을 유지할 수 있어요.

bin/kafka-reassign-partitions.sh --bootstrap-server localhost:9092 --execute --reassignment-json-file felice-cluster.json --throttle 50000000

Felice에서 스마트 리밸런스 혹은 클러스터 스케일링 등 파티션을 이동하는 재할당 작업을 진행할 경우에는 작업에 쓰로틀링을 설정하거나 해제할 수 있어요. 파티션 작업 현황 화면을 모니터링하면서 파티션 재할당 작업이 너무 느리다는 등의 문제가 있을 경우, 쓰로틀링을 해제하거나 쓰로틀링 값을 조정하면 클러스터 안정성과 성능을 보장할 수 있어요.

이미 생성한 파티션 재할당 작업에서 쓰로틀링을 설정하거나 해제하고 싶을 경우에는, 파티션 작업 현황 > 쓰로틀링을 설정 및 해제 문서를 참고해주세요.

쓰로틀링을 안전하게 사용하는 방법

쓰로틀링을 설정하여 재할당 작업을 진행하면, 시스템에 큰 부하가 가지 않도록 도와주는 장점이 있지만 쓰로틀링을 남용하여 사용할 경우 문제가 생길 수 있어요. 쓰로틀링을 이용해 재할당 작업을 진행할 때는 신중하게 설정해야해요.

1. 쓰로틀링 해제

쓰로틀링을 설정한 파티션 재할당이 종료되었다면 쓰로틀링을 해제해야해요. 쓰로틀링을 해제하지 않은 클러스터를 계속 운영하게 되면, 토픽의 복제본 간의 데이터 복제 속도에 직접적인 영향을 미쳐서 클러스터의 리소스를 최적으로 활용할 수 없어져요.

확인해주세요.

Felice 에서는 쓰로틀링을 설정한 클러스터 스케일링 혹은 스마트 리밸런싱 작업이 종료되면, 쓰로틀링을 자동으로 해제해주고 있어요.

2. 쓰로틀링 계산

쓰로틀링을 설정할 때는 카프카가 설치된 네트워크의 대역폭을 확인한 후 쓰로틀링을 계산하여 설정하는 게 좋아요. 쓰로틀링을 잘못 설정할 경우에 몇 가지 문제가 생길 수 있어요.

예를 들어, 네트워크 대역폭을 확인하지 않고 쓰로클링을 네트워크 대역폭보다 크게 설정하면 브로커 간의 통신이 과도하게 발생하여 브로커의 부하가 증가할 수 있고, 이로 인해 브로커가 다운될 수도 있어요.

반면, 쓰로틀링을 메시지 유입량에 비해 작게 설정하면, 데이터 유입량보다 파티션 복제본 속도가 느려서 파티션 이동이 지연되어 데이터 복제가 무기한으로 길어질 수 있어요.

쓰로틀링 설정하기

Felice 의 스마트 리밸런싱과 클러스터 스케일링 작업은 파티션 재할당이 발생하는 작업이에요. 파티션 재할당이 발생할 때, 쓰로틀링을 해제하거나 쓰로틀링을 설정할 수 있어요. 네트워크 대역폭 값을 설정하면 쓰로틀링 설정 값을 추천하는 기능도 제공하고 있어요.

throttle_settings

쓰로틀링 값 계산하기

쓰로틀링 설정하기 우측에 위치한 [쓰로틀링 값을 추천해드릴까요?] 버튼을 클릭하면, 클러스터가 설치된 네트워크의 대역폭의 값에 따라 쓰로틀링 설정 근사 값을 추천받을 수 있는 드로어가 노출돼요.

recommend_throttle_drawer

카프카 클러스터가 설치된 네트워크 대역폭을 입력해주시면 쓰로틀링 값을 추천해드려요. 네트워크 대역폭이 변경될 때마다 최소/최대 쓰로틀링 추천 값이 변경돼요. 최소 쓰로틀링과 최대 쓰로틀링이 0 이상일 경우에만 버튼이 활성화되며, 원하는 쓰로틀링 값을 [최소 쓰로틀링 적용] 혹은 [최대 쓰로틀링 적용] 버튼을 클릭하여 적용할 수 있어요.

확인해주세요.

네트워크 대역폭을 너무 낮게 입력할 경우, 쓰로틀링 값이 0 혹은 상이하게 나올 수 있어요. 정확한 네트워크 대역폭을 입력해주셔야 현재 메세지 처리량에 따른 쓰로틀링 최소/최대 값을 추천해드릴 수 있어요.

쓰로틀을 설정할 때, 네트워크 대역폭의 80%만 사용하고 나머지 20%는 버퍼로 남겨두는 것이 좋아요. Felice에서도 최대 네트워크 대역폭의 80%만 사용한다고 가정하여 쓰로틀링을 추천드리고 있어요.