소규모 시리즈의 첫 번째 기사에서는 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 최대 | 50페이지 | p75 | p90 | w p99 | w p99.9 | 최대값 |
---|---|---|---|---|---|---|---|---|---|---|---|
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 런타임을 사용할 수 있다는 이점이 있습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3