>Java >java지도 시간 >Docker 컨테이너 이미지를 사용하는 Lambda 함수 - Java를 사용하여 Lambda 함수의 콜드 및 웜 스타트를 측정하는 부분( 런타임

Docker 컨테이너 이미지를 사용하는 Lambda 함수 - Java를 사용하여 Lambda 함수의 콜드 및 웜 스타트를 측정하는 부분( 런타임

WBOY
WBOY원래의
2024-09-03 10:48:54353검색

Lambda function using Docker Container Image -Part easuring cold and warm starts of Lambda function with Java ( runtime

소개

소규모 시리즈의 첫 번째 기사에서는 Docker 컨테이너 이미지와 Java 런타임을 사용하여 Lambda 기능을 개발하고 배포하는 방법을 살펴보았습니다. 우리는 2가지 사용 사례를 살펴보았습니다:

  • AWS Lambda 기반 Docker 컨테이너 이미지
  • AWS OS 전용 기본 이미지

이 기사에서는 AWS Lambda 기반 Docker 컨테이너 이미지 접근 방식을 사용하여 Lambda 함수의 콜드 시작 및 웜 시작을 측정합니다.

AWS Lambda 기본 Docker 컨테이너 이미지 및 Java(21) 런타임을 사용하여 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.