검색

부록 F. Linux 컨테이너에서 실행되도록 JVM 튜닝

download PDF

Linux 컨테이너 내에서 실행되는 Java 프로세스는 JVM ergonomics 가 가비지 수집기, 힙 크기 및 런타임 컴파일러의 기본값을 설정할 수 있을 때 예상대로 작동하지 않습니다. 예를 들어, 매개 변수의 조정 없이 Java 애플리케이션을 실행할 때(예: java -jar mypplication-fat.jar knative-); JVM은 컨테이너 제한이 아닌 호스트 제한을 기반으로 여러 매개 변수를 자동으로 설정합니다.

이 섹션에서는 Linux 컨테이너 내에서 Java 애플리케이션 패키징에 대한 정보를 제공하므로 컨테이너의 제한이 기본값 계산에 고려됩니다.

F.1. JVM 튜닝

현재 Java JVM 생성은 컨테이너를 인식하지 않으므로 컨테이너 크기가 아닌 물리적 호스트의 크기에 따라 리소스를 할당합니다. 예를 들어 JVM은 일반적으로 호스트의 실제 메모리의 최대 힙 크기를 1/4로 설정합니다. 대규모 호스트 시스템에서 이 값은 컨테이너에 대해 정의된 메모리 제한을 쉽게 초과할 수 있으며, 런타임에 컨테이너 제한이 초과되면 OpenShift에서 애플리케이션을 종료합니다.

이 문제를 해결하려면 Java JVM이 제한된 컨테이너 내에서 실행되고 수동으로 수행하지 않은 경우 최대 힙 크기를 자동으로 조정할 수 있는 OpenShift 기본 이미지에서 Fuse를 사용할 수 있습니다. 애플리케이션을 실행하는 JVM에 최대 메모리 제한과 코어 제한을 설정하는 솔루션을 제공합니다. OpenShift 이미지의 Fuse의 경우 다음을 수행할 수 있습니다.

  • 컨테이너 코어에 따라 CICompilerCount 설정
  • 컨테이너 메모리 제한이 300MB 미만인 경우 C2ECDHE 컴파일러 비활성화
  • 300MB 미만의 경우 기본 힙 크기에 대해 컨테이너 메모리 제한의 1/4을 사용합니다.
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.