필수 옵션
옵션 | 설명 |
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초) |
반응형
'Web > Kafka' 카테고리의 다른 글
[kafka] Elastic Stack과 Kafka 실습해보자! - (2)(produce and consume) (3) | 2021.03.24 |
---|---|
[kafka] 카프카 관련 라이브러리 or API (0) | 2021.03.20 |
[kafka] Elastic Stack과 Kafka 실습해보자! - (1)(설치 및 구성) (0) | 2021.03.14 |
[Kafka] 카프카 기초 - 2 (0) | 2021.02.16 |
[Kafka] 카프카 기초 - 1 (0) | 2021.01.27 |