Java용 Azure 명령 시작 관리자에 대한 일반적인 질문에 대한 답변을 제공합니다.
이 도구는 Java 명령과 어떻게 다른가요?
이 java 명령은 사용자가 명시적으로 구성하지 않는 한 기본 설정으로 HotSpot JVM(Java Virtual Machine)을 실행합니다.
jaz는 검증된 클라우드 최적화 JVM 튜닝 기본값으로 java을 시작하여 Azure VM 및 컨테이너에서 성능과 비용 효율성을 향상시키도록 설계된 Java용 Azure Command Launcher의 구성 요소입니다.
주요 이점: 개발자는 JVM을 수동으로 튜닝할 필요가 없습니다.
jaz 는 해당 작업을 수행합니다.
내 환경에서 일부 JVM 옵션을 이미 설정한 경우 어떻게 되나요?
워크로드에 JVM 튜닝 플래그가 jaz 포함된 경우 명령은 자체 튜닝 기본값을 적용하지 않습니다.
jaz 선택한 플래그를 사용하여 시작합니다 java .
워크로드의 튜닝 플래그를 제거하고 Java용 Azure 명령 시작 관리자가 자체적으로 적용되도록 하는 것이 좋습니다.
jaz을(를) 튜닝 플래그를 무시하고 튜닝 기본값을 사용하도록 구성할 수도 있습니다.
이 구성을 워크로드 구성을 최소한으로 변경하여 jaz을(를) 검증하는 데 사용하는 것을 고려하십시오.
이렇게 하려면 다음 환경 변수를 설정합니다.
export JAZ_IGNORE_USER_TUNING=1
사용자 조정 무시 설정은 명령줄 인수, java가 읽은 환경 변수, 그리고 @-파일에 적용됩니다.
다음 환경 변수를 설정하여 모든 튜닝 기본값을 건너뛰도록 구성할 jaz 수도 있습니다.
export JAZ_BYPASS=1
바이패스 옵션을 사용하면 워크로드가 명령의 기본 동작을 사용하는 경우에도 현재 튜닝에 영향을 주지 않고 Java용 Azure 명령 시작 관리자에 java 온보딩할 수 있습니다.
이 동작은 JVM 튜닝 플래그를 정리하기 전에 도구의 동작에 대한 유효성을 검사하는 데 유용할 수 있습니다.
JVM 튜닝과 관련된 것으로 보이는 문제를 해결할 때 튜닝을 우회하는 것도 유용할 수 있습니다.
튜닝 플래그로 간주되는 JVM 옵션은 무엇인가요?
jaz 명령은 -X 또는 -XX로 시작하는 대부분의 플래그를 -Xmx<size>과 같은 튜닝 플래그로 간주합니다.
-X으로 시작하지만 튜닝 플래그가 아닌 플래그의 주목할 만한 예는 -Xlog:<opts>입니다.
보다 정확하게, 각 JVM 옵션은 다음 목록의 논리를 사용하여 평가됩니다. 이 목록에서는 Java용 Azure 명령 시작 관리자의 최신 버전의 논리를 설명합니다.
- 옵션이
-X이외의 다른 텍스트로 시작하면 튜닝 플래그가 아닙니다. - 이 옵션이 이러한 정규식과 일치하는 경우 튜닝 플래그가 아닙니다.
^-Xlog.+$^-XX:ErrorFile=.*$^-XX:[+-]?HeapDump.*$^-XX:[+-].*OnOutOfMemoryError$
- 그렇지 않으면 옵션은 튜닝 플래그입니다.
튜닝 플래그를 찾은 경우 jaz 전달된 인수와 자동으로 읽는 java 환경 변수를 검사합니다.
환경 변수는 다음과 같습니다.
- Java 8:
JAVA_TOOL_OPTIONS,_JAVA_OPTIONS - Java 9 이상:
JAVA_TOOL_OPTIONS,JDK_JAVA_OPTIONS_JAVA_OPTIONS
jaz 또한 명령줄 인수 파일이라고도 하는 @-files를 처리합니다.
도구를 사용할 때 Java 에이전트 플래그를 전달할 수 있나요?
Yes.
-javaagent 및 튜닝 플래그가 아닌 다른 플래그를 여전히 전달할 수 있으며, jaz은 이를 준수합니다.
다음과 같은 유용한 진단 플래그를 유지할 수 있습니다.
-
-Xlog로깅용 -
-javaagentApplication Insights 또는 다른 애플리케이션 성능 모니터링(APM) 계측 에이전트용
도구가 비 Azure 환경과 호환되는가요?
jaz 는 주로 Azure Containers 및 Virtual Machines용으로 설계되고 테스트되지만 기술적으로 다른 곳에서 실행할 수 있습니다.
그러나 일부 고급 최적화 및 향후 기능은 Azure에 따라 다를 수 있습니다.
Windows Server에서 도구를 사용할 수 있나요?
jaz 는 현재 x64 및 arm64 환경에서 Linux에 사용할 수 있습니다.
Windows Server 즉시 필요한 경우 openjdk-support@microsoft.com 문의하세요.
JRE 또는 jlink 런타임에서 작동하지 않는 이유는 무엇인가요?
Java용 Azure 명령 시작 관리자가 전체 JDK 설치에서만 테스트 및 인증되었습니다. 다음에서 제대로 작동하지 않을 수 있습니다.
- JRE(Java 런타임 환경) 설치
- 사용자 정의 jlink 런타임
전체 JDK 설치에는 제대로 작동해야 하는 모든 도구와 라이브러리가 jaz 포함됩니다. JRE 및 jlink 사용자 지정 런타임에는 이러한 구성 요소 중 일부가 부족하여 예상대로 작동하지 않을 jaz 수 있습니다.
내 cgroup 탑재 지점이 중요한 이유는 무엇인가요?
Java Azure 명령 시작 관리자가 /sys/fs/cgroup cgroup v1 및 v2 정보를 읽고 메모리 제한 및 CPU 제약 조건과 같은 사용 가능한 리소스를 확인하고 그에 따라 JVM을 조정합니다.
cgroup 파일 시스템이 표준 /sys/fs/cgroup 위치에 jaz 탑재되지 않은 경우 컨테이너화 제한을 올바르게 검색하지 못할 수 있습니다.
이로 인해 성능이 저하되거나 메모리 부족 오류가 발생할 수 있습니다. 컨테이너의 실제 제한이 아닌 호스트의 리소스에 따라 JVM을 튜닝할 수 있기 jaz 때문입니다.
cgroup 탑재 지점 /sys/fs/cgroup이 아닌 실제 시나리오를 확인하지 못했습니다.
그러나 cgroup 파일 시스템을 분리하고 다른 위치에 탑재하여 컨테이너에서 /sys/fs/cgroup 이 시나리오를 시뮬레이션할 수 있습니다.
그런 다음 cgroup jaz 정보를 읽을 수 없으며 컨테이너 인식 튜닝을 적용하지 않습니다.
문제를 방지하려면 표준 /sys/fs/cgroup 위치에서 cgroup 탑재 지점을 변경하지 마세요.
cgroup 탑재 지점은 컨테이너화된 환경에서 가장 관련이 있지만, 리소스 관리를 위해 cgroup을 사용하는 가상 머신 및 기타 Linux 환경에서도 관련이 있을 수 있습니다.
도구가 중첩된 cgroup 구성에서 작동하나요?
중첩된 cgroup 구성은 Java Azure 명령 시작 관리자가 리소스 제한을 읽는 방식에 영향을 줄 수 있습니다.
jaz 는 중첩된 cgroup 계층 구조로 테스트되지 않았으므로 이러한 환경에서 리소스 제약 조건을 올바르게 검색하지 못할 수 있습니다.
중첩된 cgroup을 사용하고 예기치 않은 동작이 발생하는 경우 다음으로 openjdk-support@microsoft.com문의하세요.