Java 버전
Java 버전 (Java Version)
이 페이지는 Kafka를 어떤 Java 버전으로, 어떤 GC 설정으로 돌리는 게 좋은지에 대한 권장 사항이에요. 성능과 보안을 고려한 실무 가이드라인이니, 브로커 JVM 옵션을 잡을 때 참고하면 좋아요.
출처: 문서
본문
Java 17, Java 21, Java 25는 완전히 지원되며, Java 11은 일부 모듈(클라이언트, 스트림 및 관련 모듈)에 대해서만 지원됩니다. 가장 최근 LTS 버전보다 최신 버전에 대한 지원은 best-effort이며, 프로젝트는 일반적으로 가장 최근의 비-LTS 버전으로만 테스트합니다.
우리는 일반적으로 성능, 효율성, 지원 측면에서 가장 최근 LTS 릴리스(글 작성 시점 기준 Java 25)로 Apache Kafka를 실행할 것을 권장합니다. 보안 관점에서는 최신 릴리스된 패치 버전을 권장하는데, 이전 버전은 보통 공개된 보안 취약점이 있기 때문입니다.
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
참고로, 위 Java 인자를 사용하는 LinkedIn에서 가장 바쁜 클러스터 중 하나(피크 시점)의 통계는 다음과 같습니다:
- 브로커 60대
- 50k 파티션(복제 팩터 2)
- 초당 80만 메시지 유입
- 초당 300 MB 인바운드, 1 GB/s 이상 아웃바운드
그 클러스터의 모든 브로커는 90% GC 일시 중지 시간이 약 21ms이며, 초당 young GC가 1회 미만입니다.
더 알아보기 (Learn more)
- 최신 LTS Java와 최신 패치 버전을 쓰면 성능과 보안 모두 유리해요.
- G1GC와 함께 적절한 힙·Metaspace 설정을 주면 대용량 클러스터에서도 GC 일시 중지를 짧게 유지할 수 있어요.