Lambda 함수 호출 시간 초과 오류 문제를 해결하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2022년 1월 11일

코드 변경 사항을 배포하지 않았는데도 AWS Lambda 함수에서 간헐적으로 시간 초과 문제가 발생합니다. Lambda 함수 시간 초과 문제를 해결 방법은 무엇이고, 방지하려면 어떻게 해야 합니까?

해결 방법

Lambda 함수는 여러 가지 이유로 시간 초과가 발생할 수 있습니다. Lambda 함수 시간 초과를 해결하려면 먼저 이 문서에 나열된 AWS 서비스 및 기능 중 하나를 사용하여 문제의 원인을 확인합니다. 그런 다음 사용 사례에 따라 문제를 해결합니다.

Lambda 함수의 시간 초과를 방지하려면 이 문서의 Lambda 함수 시간 초과 방지를 위한 모범 사례 섹션을 참조하세요.

Lambda 함수가 시간 초과되는지 확인

함수의 Amazon CloudWatch 로그 그룹에서 Task timed out 구문을 검색하여 시간 초과된 호출의 요청 ID를 검색합니다. 그런 다음 관련된 시간 초과 호출의 요청 ID를 사용하여 각 호출 시간 초과에 대한 전체 로그를 검색합니다.

지침은 Lambda 함수가 시간 초과되는지 확인하려면 어떻게 해야 합니까?를 참조하세요.

Lambda 함수가 시간 초과되는 원인 식별

다음 방법 중 하나 이상을 사용하여 함수 시간 초과를 유발하는 실패 지점을 식별합니다.

Amazon CloudWatch Logs에서 Lambda 확인

CloudWatch를 사용하여 함수 코드로 생성된 모든 로그를 보고 잠재적인 문제를 식별할 수 있습니다. 지침은 AWS Lambda에 대한 Amazon CloudWatch Logs 액세스를 참조하세요.

함수가 스택 추적을 반환하는 경우 스택 추적의 오류 메시지가 오류의 원인을 지정합니다.

중요: Lambda는 각 호출에 대해 3개의 로그 라인을 자동으로 생성합니다(START, ENDREPORT). 다음 중 하나에 해당하는 경우 함수의 CloudWatch 로그에 이 세 라인만 표시됩니다.

  • Lambda 함수의 사용자 지정 코드에는 다른 명시적 로깅이 구성되어 있지 않습니다.
  • Lambda가 로그를 출력하는 함수의 코드를 실행하기 전에 함수의 지속 시간 제한에 도달합니다.

로그를 검토한 후에도 시간 초과의 원인을 확인할 수 없는 경우 다음 중 하나 이상 조치를 수행해 보세요.

함수 코드에 더 많은 로깅 출력을 추가하려면 사용 중인 Lambda 런타임에 대한 다음 설명서를 참조하세요.

AWS X-Ray를 사용하여 코드 성능 병목 현상 식별

Lambda 함수가 다운스트림 AWS 리소스, 마이크로서비스, 데이터베이스 또는 HTTP 웹 API를 사용하는 경우 AWS X-Ray를 사용하여 코드 성능 문제를 해결할 수 있습니다.

자세한 내용은 AWS X-Ray에서 AWS Lambda 사용을 참조하세요.

Lambda Insights를 사용하여 함수에 대한 시스템 수준 지표 수집

Lambda Insights는 CPU 시간, 메모리, 디스크 및 네트워크 지표를 비롯한 시스템 수준 지표를 수집합니다. 또한 콜드 스타트 및 Lambda 작업자 종료를 비롯한 진단 정보를 수집하여 Lambda 함수와 관련된 문제를 격리하는 데 도움이 됩니다.

자세한 내용은 Lambda Insights 사용을 참조하세요.

참고: Lambda Insights를 사용하면 AWS 계정에 요금이 발생합니다. Lambda 확장 프로그램에서 사용한 호출 시간에 대해 1ms 단위로 요금이 부과됩니다.

VPC 흐름 로그를 사용하여 특정 호출 요청이 거부되었거나 라우팅되지 않은 이유 확인

VPC 흐름 로그를 사용하면 Amazon Virtual Private Cloud(Amazon VPC)를 오가는 모든 네트워크 트래픽을 볼 수 있습니다.

자세한 내용은 Lambda의 네트워킹 문제 해결을 참조하십시오.

참고: VPC 흐름 로그를 설정하도록 선택하는 경우 다음 사항에 유의하세요.

HTTP 유선 추적을 사용하여 호출 중에 함수 코드에 의해 생성되는 네트워크 요청을 구체적으로 로깅

자세한 내용은 HTTP 유선 추적 로깅을 참조하세요.

Lambda 함수 시간 초과 방지를 위한 모범 사례

Lambda 함수가 멱등성인지 확인

네트워크 연결 문제가 발생할 경우 API 호출이 예상보다 더 오래 걸릴 수 있습니다. 또한 네트워크 문제로 인해 재시도 및 중복 API 요청이 발생할 수도 있습니다. 이러한 문제에 대비하려면 Lambda 함수가 멱등성인지 확인해야 합니다.

자세한 내용은 멱등성 Lambda 함수를 만들려면 어떻게 해야 합니까?를 참조하세요.

함수 핸들러 외부에서 함수의 정적 로직 초기화

Lambda 함수를 초기화할 때 Lambda는 호출의 초기화 단계가 완료될 때까지 최대 10초를 할당합니다. 이 시간 제약으로 인해 초기화 코드의 함수 처리기 외부에서 다음을 수행하는 것이 가장 좋습니다.

  • 라이브러리 및 종속성 가져오기
  • 설정 구성
  • 다른 다운스트림 서비스 및 리소스에 대한 연결 초기화

이 정적 초기화를 사용하면 이러한 리소스를 샌드박스당 1회 초기화한 후 런타임 환경에서 향후 모든 호출에 재사용할 수 있습니다.

자세한 내용은 정적 초기화 최적화하기를 참조하세요. 또한 Lambda 운영자 안내서의 다운스트림 사용 불가 및 Lambda 개발자 안내서의 함수 코드를 참조하세요.

참고: Lambda는 다운스트림 리소스에 대한 유휴 연결을 제거합니다. 함수가 영구 연결을 유지하도록 허용하려면 사용 중인 Lambda 런타임과 연결된 tcp_keepalive 변수를 사용합니다.

사용 중인 AWS SDK의 재시도 횟수 및 시간 초과 설정이 함수를 초기화하는 데 충분한 시간을 허용하는지 확인

AWS SDK를 사용하여 API를 호출할 때 호출이 실패하면 AWS SDK에서 자동으로 호출을 다시 시도합니다. AWS SDK의 재시도 횟수와 기간은 AWS SDK에 따라 다른 설정에 의해 결정됩니다. 함수를 초기화하는 데 기본 AWS SDK 설정에서 허용하는 시간보다 더 많은 시간이 필요할 수 있습니다.

자세한 내용은 AWS SDK를 사용하여 Lambda 함수를 호출할 때 재시도 및 제한 시간 문제가 발생할 경우 어떻게 해결합니까?를 참조하세요.

(선택 사항) Lambda 함수에 대해 프로비저닝된 동시성 구성

프로비저닝된 동시성은 요청된 수의 런타임 환경을 초기화하므로 함수의 호출에 즉시 응답할 수 있습니다. 함수에 대하여 프로비저닝된 동시성을 설정하려면 프로비저닝된 동시성 구성의 지침을 따르세요.

자세한 내용은 Lambda 함수에 대한 동시성 관리를 참조하세요.

참고: 프로비저닝된 동시성을 구성하면 AWS 계정에 요금이 부과됩니다. 함수 버전 또는 Lambda 함수 별칭에서 프로비저닝된 동시성을 구성할 수 있습니다.

Lambda 함수에 충분한 시스템 리소스가 있는지 확인

Lambda 함수 호출에 할당된 네트워크 대역폭 및 CPU는 함수의 메모리 구성에 따라 결정됩니다.

자세한 내용은 Lambda 운영자 안내서의 메모리 및 컴퓨팅 성능을 참조하세요.

함수 핸들러가 문자열을 반환하기 전에 Lambda 함수가 사용하는 백그라운드 프로세스가 모두 완료되는지 확인

자세한 내용은 AWS Lambda의 컨테이너 재사용 이해를 참조하세요.

Lambda 함수가 통합 AWS 서비스의 최대 시간 초과 설정 내에서 작동하도록 구성되었는지 확인

Lambda 함수의 최대 호출 시간 초과는 15분이지만 다른 AWS 서비스에서는 시간 초과 제한이 다를 수 있습니다.

예를 들어 Amazon API Gateway는 Lambda 함수 프록시 호출이 완료될 때까지 최대 29초 동안 대기합니다. 자세한 내용은 API Gateway를 Lambda 함수와 통합할 때 발생하는 오류를 해결하려면 어떻게 해야 합니까?를 참조하세요. 또한 다른 서비스와 함께 AWS Lambda 사용을 참조하세요.

함수가 도달하려고 하는 엔드포인트에 대한 유효한 네트워크 경로가 있는지 확인

네트워크 설정을 검토하려면 Amazon VPC에서 Lambda 함수의 제한 시간 초과 문제를 해결하려면 어떻게 해야 합니까?의 지침을 따르세요.


이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요하세요?