2.9. jvmOptions
다음 Apache Kafka 구성 요소는 JVM(Java Virtual Machine) 내에서 실행됩니다.
- Apache Kafka
- Apache Zoo Cryostat
- Apache Kafka Connect
- Apache Kafka MirrorMaker
- Apache Kafka Kafka 브리지 스트림
다른 플랫폼 및 아키텍처에서 성능을 최적화하려면 다음 리소스에서 jvmOptions
속성을 구성합니다.
-
Kafka.spec.kafka
-
Kafka.spec.zookeeper
-
Kafka.spec.entityOperator.userOperator
-
Kafka.spec.entityOperator.topicOperator
-
Kafka.spec.cruiseControl
-
KafkaNodePool.spec
-
KafkaConnect.spec
-
KafkaMirrorMaker.spec
-
KafkaMirrorMaker2.spec
-
KafkaBridge.spec
구성에 다음 옵션을 지정할 수 있습니다.
-Xms
- JVM이 시작될 때 최소 초기 할당 힙 크기
-Xmx
- 최대 힙 크기
-XX
- JVM에 대한 고급 런타임 옵션
javaSystemProperties
- 추가 시스템 속성
gcLoggingEnabled
- 가비지 수집기 로깅 활성화
-Xmx
및 -Xms
와 같은 JVM 설정에서 허용되는 단위는 해당 이미지의 JDK java
바이너리에서 허용하는 단위와 동일합니다. 따라서 1g
또는 1G
는 1,073,741,824바이트 및 Gi
는 유효한 단위 접미사가 아닙니다. 이는 메모리 요청 및 제한에 사용되는 단위와 다릅니다. 1G 규칙에 따라 1G
는 1,000,000,000바이트를 의미하며 1Gi
는 1,073,741,824바이트를 의미합니다.
-Xms
및 -Xmx
옵션
컨테이너에 대한 메모리 요청 및 제한 값을 설정하는 것 외에도 -Xms
및 -Xmx
JVM 옵션을 사용하여 JVM에 대한 특정 힙 크기를 설정할 수 있습니다. Xms
옵션을 사용하여 초기 힙 크기와 -Xmx
옵션을 설정하여 최대 힙 크기를 설정합니다.
JVM에 할당된 메모리를 더 많이 제어하도록 힙 크기를 지정합니다. 힙 크기는 컨테이너의 메모리 제한(및 요청) 을 초과하지 않고 최대한 활용해야 합니다. 힙 크기 및 다른 메모리 요구 사항은 지정된 메모리 제한에 적합해야 합니다. 구성에 힙 크기를 지정하지 않고 메모리 리소스 제한(및 요청)을 구성하는 경우 Cluster Operator는 기본 힙 크기를 자동으로 적용합니다. Cluster Operator는 메모리 리소스 구성의 백분율에 따라 기본 최대 및 최소 힙 값을 설정합니다.
다음 표에서는 기본 힙 값을 보여줍니다.
Component | 힙에 할당된 사용 가능한 메모리의 백분율 | 최대 제한 |
---|---|---|
Kafka | 50% | 5GB |
ZooKeeper | 75% | 2GB |
Kafka Connect | 75% | 없음 |
MirrorMaker 2 | 75% | 없음 |
MirrorMaker | 75% | 없음 |
크루즈 제어 | 75% | 없음 |
Kafka Bridge | 50% | 31Gi |
메모리 제한(및 요청)을 지정하지 않으면 JVM의 최소 힙 크기가 128M
로 설정됩니다. JVM의 최대 힙 크기는 필요에 따라 메모리를 늘릴 수 있도록 정의되지 않습니다. 이는 테스트 및 개발의 단일 노드 환경에 이상적입니다.
적절한 메모리 요청을 설정하면 다음을 방지할 수 있습니다.
- 노드에서 실행 중인 다른 포드의 메모리가 부족하면 OpenShift에서 컨테이너를 종료합니다.
-
OpenShift는 메모리가 충분하지 않은 노드에 컨테이너를 예약합니다.
-Xms
가-Xmx
로 설정된 경우 컨테이너가 즉시 충돌합니다. 그렇지 않으면 컨테이너가 나중에 충돌합니다.
이 예에서 JVM은 힙에 대해 2GiB(=2,147,483,648 바이트)를 사용합니다. 총 JVM 메모리 사용량은 최대 힙 크기보다 훨씬 클 수 있습니다.
예: Xmx
및 -Xms
구성
# ... jvmOptions: "-Xmx": "2g" "-Xms": "2g" # ...
# ...
jvmOptions:
"-Xmx": "2g"
"-Xms": "2g"
# ...
초기 (-Xms
) 및 최대 (-Xmx
) 힙 크기에 대해 동일한 값을 설정하면 JVM이 시작 후 메모리를 할당하지 않아도 실제로 필요한 것보다 더 많은 힙을 할당할 수 있습니다.
Kafka 브로커 컨테이너와 같은 많은 디스크 I/O를 수행하는 컨테이너에는 운영 체제 페이지 캐시로 사용하기 위해 사용 가능한 메모리가 필요합니다. 이러한 컨테이너의 경우 요청된 메모리는 JVM에서 사용하는 메모리보다 훨씬 커야 합니다.
-XX 옵션
-XX
옵션은 Apache Kafka의 KAFKA_JVM_PERFORMANCE_OPTS
옵션을 구성하는 데 사용됩니다.
-XX
구성 예
jvmOptions: "-XX": "UseG1GC": "true" "MaxGCPauseMillis": "20" "InitiatingHeapOccupancyPercent": "35" "ExplicitGCInvokesConcurrent": "true"
jvmOptions:
"-XX":
"UseG1GC": "true"
"MaxGCPauseMillis": "20"
"InitiatingHeapOccupancyPercent": "35"
"ExplicitGCInvokesConcurrent": "true"
-XX
구성으로 인한 JVM 옵션
-XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+ExplicitGCInvokesConcurrent -XX:-UseParNewGC
-XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+ExplicitGCInvokesConcurrent -XX:-UseParNewGC
-XX
옵션을 지정하지 않으면 KAFKA_JVM_PERFORMANCE_OPTS
의 기본 Apache Kafka 구성이 사용됩니다.
javaSystemProperties
javaSystemProperties
는 디버깅 유틸리티와 같은 추가 Java 시스템 속성을 구성하는 데 사용됩니다.
javaSystemProperties
구성 예
jvmOptions: javaSystemProperties: - name: javax.net.debug value: ssl
jvmOptions:
javaSystemProperties:
- name: javax.net.debug
value: ssl
jvmOptions
에 대한 자세한 내용은 JvmOptions
스키마 참조를 참조하십시오.