소규모 시리즈의 첫 번째 기사에서는 Docker 컨테이너 이미지와 Java 런타임을 사용하여 Lambda 기능을 개발하고 배포하는 방법을 살펴보았습니다. 우리는 2가지 사용 사례를 살펴보았습니다:
이 기사에서는 AWS Lambda 기반 Docker 컨테이너 이미지 접근 방식을 사용하여 Lambda 함수의 콜드 시작 및 웜 시작을 측정합니다.
측정을 위해 첫 번째 부분의 샘플 애플리케이션을 사용하고 Lambda 함수에 Java 21 런타임을 사용합니다. 모든 Lambda 함수에 대해 1024MB 메모리를 제공하고 JAVA_TOOL_OPTIONS: "-XX:+TieredCompilation -XX:TieredStopAtLevel=1"을 사용합니다. 이 컴파일 옵션은 콜드 시작 시간과 웜 시작 시간 간의 매우 좋은 교환을 제공합니다.
아래 실험 결과는 제품 검색을 담당하는 Java Lambda 핸들러 클래스에 매핑된 Lambda 함수 GetProductByIdWithPureJava21GraalVMNativeImageLambda를 사용하여 1시간 동안 100번 이상의 콜드 스타트와 약 100,000번의 웜 스타트를 재현한 것을 기반으로 합니다(저장됨). DynamoDB에서) ID로. 이를 위해 부하 테스트 도구를 사용했지만 Serverless-artillery 또는 Postman과 같이 원하는 도구를 사용할 수 있습니다.
콜드(c) 및 웜(m) 시작 시간(ms):
c p50 | c p75 | c p90 | c p99 | c p99.9 | c max | w p50 | w p75 | w p90 | w p99 | w p99.9 | w max |
---|---|---|---|---|---|---|---|---|---|---|---|
3093.26 | 3219.44 | 3314.12 | 4632.16 | 6513.35 | 6517.71 | 5.47 | 6.20 | 7.39 | 17.14 | 43.03 | 1386.07 |
이 기사에서는 AWS Lambda 기반 Docker 컨테이너 이미지 접근 방식을 사용하여 Lambda 함수의 콜드 및 웜 시작 시간을 측정했습니다. 우리는 1024MB 메모리와 Lambda Java 21 관리형 런타임을 갖춘 Lambda에 대해 다양한 Lambda 메모리 설정을 사용하여 Java 21에서 콜드 및 웜 스타트를 측정하는 것과 비교할 때 상당히 중요한 콜드 스타트와 상당히 경쟁적인 웜 스타트 시간을 경험했습니다.
콜드 스타트 시간을 크게 줄여주는 AWS Lambda SnapStart는 현재 Java Corretto 관리형 런타임(11, 17, 21)에서만 사용할 수 있으며 Docker 컨테이너 이미지에서는 사용할 수 없습니다. jlink 도구를 탐색하여 모듈 세트와 해당 종속성을 더 작은 사용자 정의 런타임 이미지 및 클래스 데이터 공유(CDS)로 어셈블하고 최적화할 수 있습니다. 이는 Java 프로그래밍 언어 애플리케이션, 특히 더 작은 애플리케이션의 시작 시간을 줄이는 데 도움이 됩니다. 발자국을 줄입니다. Docker 이미지를 Java용 배포 아티팩트로 사용하면 Java 22(Java 23은 2024년 9월 출시 예정)와 같은 최신 Java 런타임을 사용할 수 있다는 장점이 있습니다.
위 내용은 Docker 컨테이너 이미지를 사용하는 Lambda 함수 - Java를 사용하여 Lambda 함수의 콜드 및 웜 스타트를 측정하는 부분( 런타임의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!