Lambda 함수의 Java 런타임 시작 동작에 대한 사용자 지정
이 페이지에서는 AWS Lambda의 Java 함수와 관련된 설정을 설명합니다. 이러한 설정을 사용하여 Java 런타임 시작 동작을 사용자 지정할 수 있습니다. 이를 통해 코드를 수정하지 않고도 전체 함수 지연 시간을 줄이고 전체 함수 성능을 개선할 수 있습니다.
Sections
JAVA_TOOL_OPTIONS
환경 변수에 대한 이해
Java에서 Lambda는 Lambda에서 추가 명령줄 변수를 설정할 수 있도록 JAVA_TOOL_OPTIONS
환경 변수를 지원합니다. 계층형 컴파일 설정을 사용자 지정하는 등 다양한 방식으로 이 환경 변수를 사용할 수 있습니다. 다음 예제에서는 이 사용 사례에 JAVA_TOOL_OPTIONS
환경 변수를 사용하는 방법을 설명합니다.
예제: 계층형 컴파일 설정에 대한 사용자 지정
계층형 컴파일은 Java 가상 머신(JVM)의 기능입니다. 특정 계층형 컴파일 설정을 사용하여 JVM의 JIT(Just-In-Time) 컴파일러를 최대한 활용할 수 있습니다. 일반적으로 C1 컴파일러는 빠른 시작 시간에 최적화되어 있습니다. C2 컴파일러는 최상의 전체 성능에 최적화되어 있지만 더 많은 메모리를 사용하고 이를 달성하는 데 더 오랜 시간이 걸립니다.
계층형 컴파일에는 5가지 수준이 있습니다. 수준 0에서 JVM은 Java 바이트 코드를 해석합니다. 수준 4에서 JVM은 C2 컴파일러를 사용하여 애플리케이션 시작 중 수집된 프로파일링 데이터를 분석합니다. 시간 경과에 따라 코드 사용을 모니터링하여 최상의 최적화를 식별합니다.
계층형 컴파일 수준을 사용자 지정하면 Java 함수 콜드 스타트 지연 시간을 줄이는 데 도움이 될 수 있습니다. 예를 들어, 계층형 컴파일 수준을 1로 설정하여 JVM이 C1 컴파일러를 사용하도록 합니다. 이 컴파일러는 최적화된 네이티브 코드를 빠르게 생성하지만 프로파일링 데이터를 생성하지 않으며 C2 컴파일러를 사용하지 않습니다.
Java 17 런타임에서 계층화된 컴파일에 대한 JVM 플래그는 기본적으로 수준 1에서 중지하도록 설정됩니다. Java 11 런타임 이하의 경우 다음 단계를 수행하여 계층화된 컴파일 수준을 1로 설정할 수 있습니다.
계층형 컴파일 설정 사용자 지정(콘솔)
-
Lambda 콘솔에서 함수
페이지를 엽니다. -
계층형 컴파일을 사용자 지정하려는 Java 함수를 선택합니다.
-
구성 탭을 선택한 다음 왼쪽 메뉴에서 환경 변수를 선택합니다.
-
편집을 선택합니다.
-
Add environment variable(환경 변수 추가)을 선택합니다.
-
키로
JAVA_TOOL_OPTIONS
를 입력합니다. 값으로-XX:+TieredCompilation -XX:TieredStopAtLevel=1
을 입력합니다. -
Save(저장)를 선택합니다.
참고
Lambda SnapStart를 사용하여 콜드 스타트 문제를 완화할 수도 있습니다. SnapStart는 실행 환경의 캐시된 스냅샷을 사용하여 시작 성능을 크게 향상시킵니다. SnapStart 기능, 제한 사항 및 지원되는 리전에 대한 자세한 내용은 Lambda SnapStart를 사용하여 시작 성능 개선 섹션을 참조하세요.
예: JAVA_TOOL_OPTIONS를 사용하여 GC 동작 사용자 지정
Java 11 런타임은 가비지 수집을 위해 직렬JAVA_TOOL_OPTIONS
환경 변수를 사용하여 기본 GC를 변경할 수도 있습니다. 병렬 GC와 Shenandoah GC
예를 들어 워크로드에 더 많은 메모리와 여러 CPU를 사용하는 경우 병렬 GC를 사용하여 성능을 향상시킬 수 있습니다. JAVA_TOOL_OPTIONS
환경 변수 값에 다음을 추가하여 이 작업을 수행할 수 있습니다.
-XX:+UseParallelGC