본문 바로가기

Web/Kafka

[Kafka] Kafka 옵션 정리

필수 옵션

옵션 설명
broker.id 브로커 ID, 클러스터 내에 유일한 값이어야 함
zookeeper.connect 주키퍼 접속정보
listeners 리스너 목록 (프로토콜://호스트명:포트)

토픽 옵션

옵션 설명 기본값 추천값
auto.create.topics.enable 토픽 자동 생성여부 true false
delete.topic.enable 토픽 삭제 가능 여부 true true
num.partitions 토픽당 기본 파티션 수 1 1

성능 옵션

옵션 설명 기본값 추천값
background.threads 백그라운드 처리에 사용할 스레드 수 10  
compression.type 압축 유형('gzip', 'snappy', 'lz4', 'zstd') producer (producer가 설정한 압축 코덱을 유지)  
message.max.bytes 레코드 배치의 최대 크기 (토픽별 설정시 : max.message.bytes) 1048588 (약 1M) 10485880 (10M)
num.io.threads 서버가 요청을 처리하는데 사용하는 스레드 수 (disk I/O포함) 8 디스크 개수
num.network.threads 서버가 받은 요청을 응답하는데 사용할 스레드 수 3 producer, consumer, replica fetcher 수를 고려하여 지정
num.recovery.threads.per.data.dir 시작시 복구에 사용될 스레드 수 (시작된 이후에는 사용되지 않는 스레드) 1  
queued.max.requests 네트워크 스레드가 모두 동작중일 경우 대기시킬 요청의 최대값 500  
request.timeout.ms 요청 타임아웃 시간, 이 시간이 지날때까지 브로커가 응답이 없으면 재시도 또는 실패 30000  
fetch.max.bytes 한번에 가져올 수 있는 크기 57671680 (50M)  
max.connections
브로커에서 허용할 최대 연결 수 2147483647  
queued.max.request.bytes
처리할 요청이 많을때 대기할 요청의 최대 크기 -1 (무제한)  

로그 옵션 

옵션 설명 기본값 추천값
log.dir 실제 데이터(로그)가 보관되는 위치 (여러개면 log.dirs) /tmp/kafka-logs  
log.flush.interval.messages 디스크로 쓰기 전에 메모리에 보유할 메세지의 개수 (대략) 9223372036854775807 IBM 100000
log.flush.interval.ms 메세지를 디스크로 쓰기 전에 메모리에 보유할 시간 (ms) ${log.flush.scheduler.interval.ms} IBM 50000
log.flush.offset.checkpoint.interval.ms 복구포인트로 사용될 레코드의 마지막 flush 빈도 60000  
log.flush.scheduler.interval.ms 로그를 flush(디스크에 기록)해야할지 확인하는 빈도 9223372036854775807 IBM 2000
log.retention.bytes 삭제 전 보관할 파티션당 로그의 크기 -1 (무제한)  
log.retention.hours(or minutes, ms) 메세지 수명 168 72
log.roll.hours (or ms) 세그먼트가 새로 생성되는 시간 (세그먼트 크기가 max에 도달하지 않아도 rollout) 168 1
log.segment.delete.delay.ms 세그먼트를 삭제하기 전 대기시간 1073741824 (약 1G) default
log.cleaner.backoff.ms 정리할 로그가 없을 경우 로그 클리너가 sleep할 시간을 60000  
log.cleaner.dedupe.buffer.size 모든 클리너 스레드에서 로그 중복제거에 사용할 메모리 크기 15000 (15초)  
log.cleaner.delete.retention.ms
삭제 레코드 보관기간 134217728  
log.cleaner.enable 로그 클리너 사용 여부 86400000 (24시간)  
log.cleaner.threads
로그 정리에 사용할 스레드 수 1  
log.cleanup.policy
보존 기간을 초과한 세그먼트 처리 정책 delete  
log.retention.check.interval.ms 로그 클리너가 삭제 가능한 로그가 있는지 확인하는 빈도가 300000 (5분)  

복제 옵션

옵션 설명 기본값 추천값
default.replication.factor 복제계수 1 3
min.insync.replicas 최소 ISR 수 1 1 (장애로 인한 유실을 줄이려면 2, 단 이때는 replica 설정이 3 이상이어야 함)
num.replica.fetchers 소스를 가진 브로커로부터 복제본을 가져올 스레드 수 1 IBM 4
replica.fetch.min.bytes 복제를 위해 한번에(배치) 가져올 수 있는 데이터의 최소크기 1  
replica.fetch.wait.max.ms 복제요청 대기시간 (replica.lag.time.max.ms보다 작아야함) 500  
replica.lag.time.max.ms 복제 지연이라고 판단할 반응이 없는 시간 (ISR에서 제거할 시간) 30000  
replica.fetch.backoff.ms 파티션 복제시 오류가 발생하면 재시도할때까지 멈출 시간 1000 (1초)  
replica.fetch.max.bytes 파티션 복제시 가져올 메세지 바이트 크기 (message.max.bytes우선) 1048576 (약 1M)  

오프셋 옵션

옵션 설명 기본값 추천값
offsets.retention.minutes 컨슈머그룹이 비어있고 나서 오프셋정보가 삭제되기까지 시간 10080 (7일)  
offsets.topic.num.partitions 오프셋 커밋을 위한 토픽의 파티션 수 (배포 후 변경 금지) 50  
offsets.topic.replication.factor 오프셋 토픽의 복제본 수 3  
offsets.topic.segment.bytes
오프셋 토픽의 세그먼트 크기 104857600 (100M)  

컨슈머그룹 옵션

옵션 설명 기본값 추천값
group.initial.rebalance.delay.ms 그룹코디네이터가 첫 리밸런스를 수행한 이후 새로운 컨슈머가 그룹에 들어오는걸 대기하는 시간 3000  
group.max.session.timeout.ms 등록된 컨슈머의 최대 세션 제한시간, 값이 클수록 컨슈머의 장애감지가 느리지만 하트비트 빈도가 줄어들어 컨슈머가 메세지를 처리할 수 있는 충분한 시간을 제공 1800000 (30분)  
group.max.size 컨슈머 그룹이 가질 수 있는 컨슈머의 최대 크기 2147483647  
group.min.session.timeout.ms 등록된 컨슈머의 최소 세션 제한시간, 값이 작을수록 컨슈머의 장애감지가 빠르지만 하트비트 빈도가 늘어가 더 많은 리소스가 사용됨 6000 (6초)  

 

반응형