Web/Kafka
[Kafka] Kafka 옵션 정리
MarrRang
2020. 11. 25. 14:40
필수 옵션
옵션 |
설명 |
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초) |
|