본문 바로가기
오픈소스/Kafka

[카프카] G1GC 사용 시 권장할만한 파라미터 값

by sangyeon 2022. 2. 24.
728x90

https://kafka.apache.org/documentation.html#topicconfigs

 

Apache Kafka

Apache Kafka: A Distributed Streaming Platform.

kafka.apache.org

 

카프카의 경우 Java8, Java11 지원된다. (Java 11 경우에는 TLS 활성화된 경우 훨씬  나은 성능을 발휘하므로 적극 권장합니다.

OpenJDK 기반 Java 구현(Oracle JDK 포함)으로 Kafka 실행하기 위한 일반적인 인수는 다음과 같습니다.

-Xmx6g -Xms6g
-XX:MetaspaceSize=96m
-XX:+UseG1GC
-XX:MaxGCPauseMillis=20
-XX:InitiatingHeapOccupancyPercent=35
-XX:G1HeapRegionSize=16M
-XX:MinMetaspaceFreeRatio=50
-XX:MaxMetaspaceFreeRatio=80
-XX:+ExplicitGCInvokesConcurrent

참고로 위 설정을 사용하는 사례는 피크 타임 때 아래 수치로 사용한다고 합니다.

  • 60 brokers
  • 50k partitions (replication factor 2)
  • 800k messages/sec in
  • 300 MB/sec inbound, 1 GB/sec+ outbound

 

 항목별 의미하는 내용은 아래와 같습니다.

항목 내용
-Xmx6g -Xms6g Heap 메모리 최소/최대를 6G 설정
-XX:MetaspaceSize=96m 메타데이터 크기를 설정(default : 20m)
-XX:+UseG1GC G1GC 활성화 옵션
-XX:MaxGCPauseMillis=20 GC 실행 중에 최대 일시정지 시간을 설정한다. (default : 200ms)
-XX:InitiatingHeapOccupancyPercent=35 힙 사용량이 백분율을 초과할 때 Mark 시작한다. (default : 45%)
-XX:G1HeapRegionSize=16M G1 Region의 크기 설정 (*범위는 1MB ~ 32MB)
-XX:MinMetaspaceFreeRatio=50 가비지 수집을 유도할 클래스 메타데이터에 할당된 공간(하이 워터마크)의 증가를 피하기 위해 GC 이후에 사용 가능한 클래스 메타데이터 용량의 최소 백분율입니다.
-XX:MaxMetaspaceFreeRatio=80 가비지 수집을 유도할 클래스 메타데이터에 할당된 공간(하이워터마크)의 감소를 피하기 위해 GC 이후 사용 가능한 클래스 메타데이터 용량의 최대 백분율입니다.
-XX:+ExplicitGCInvokesConcurrent 해당 옵션을 설정하면 System.gc() 호출되더라도 GC알고리즘이 Concurrent GC 경우 Full GC 일어나지 않고 Concurrent GC 발생한다.
728x90