Complete a 3 Question Survey and Earn a re:Post Badge
Help improve AWS Support Official channel in re:Post and share your experience - complete a quick three-question survey to earn a re:Post badge!
Lambda 함수 호출 시간 초과 오류를 해결하려면 어떻게 해야 합니까?
코드 변경을 배포하지 않았는데도 AWS Lambda 함수가 간헐적으로 제한 시간을 초과했습니다.
해결 방법
Lambda 함수는 다양한 이유로 제한 시간을 초과할 수 있습니다. Lambda 함수 제한 시간 초과 문제를 해결하려면 먼저 문제의 원인을 파악해야 합니다. 이후 사용 사례를 기반으로 문제를 해결하십시오.
Lambda 함수가 시간 초과되었는지 확인
제한 시간이 초과된 호출의 요청 ID를 검색하려면 함수의 Amazon CloudWatch 로그 그룹에서 작업 시간 초과라는 문구를 검색합니다. 이후 시간 초과된 관련 호출의 요청 ID를 사용하여 전체 로그에서 각 호출 시간 초과를 검색합니다.
지침은 Lambda 함수가 시간 초과되었는지 확인하려면 어떻게 해야 합니까?를 참조하십시오.
Lambda 함수의 시간 초과 원인 파악
다음 방법 중 하나 이상을 사용하여 함수의 시간 초과를 유발한 실패 지점을 식별합니다.
Lambda에 대한 CloudWatch Logs 검토
Amazon CloudWatch를 사용하여 함수 코드에서 생성된 모든 로그를 보고 잠재적 문제를 식별할 수 있습니다. 지침은 Lambda에서 CloudWatch Logs 사용을 참조하십시오.
함수가 스택 추적을 반환하는 경우 스택 추적의 오류 메시지가 오류의 원인을 지정합니다.
중요: Lambda는 각 호출에 대해 자동으로 3개의 로그 라인(START, END 및 REPORT)을 생성합니다. 다음 중 하나에 해당하는 경우 이 3개의 라인만 함수의 CloudWatch 로그에 표시됩니다.
- Lambda 함수의 사용자 지정 코드에는 다른 명시적 로깅이 구성되지 않습니다.
- Lambda가 로그를 출력하는 함수 코드를 실행하기 전에 함수의 지속 시간 제한에 도달합니다.
CloudWatch 로그에서 시간 초과의 원인을 파악할 수 없는 경우 다음 해결 방법 중 하나 이상을 시도해 보십시오.
- 사용한 AWS SDK의 재시도 횟수 및 제한 시간 설정이 함수를 초기화하기에 충분한 시간을 허용하는지 확인합니다.
- Lambda 함수의 제한 시간 설정을 일시적으로 늘려 함수 코드에서 로그 데이터를 생성하기에 충분한 시간을 허용합니다.
- 호출 지속 시간 지연을 줄이고 컴퓨팅 성능을 높이는 데 도움이 되도록 함수의 구성된 메모리를 늘립니다.
함수 코드에 더 많은 로깅 출력을 추가하려면 사용하는 Lambda 런타임 버전에 따라 다음 문서를 참조하십시오.
- Node.js에서 AWS Lambda 함수 로깅
- Python에서 AWS Lambda 함수 로깅
- Ruby에서 AWS Lambda 함수 로깅
- Java에서 AWS Lambda 함수 로깅
- Go에서 AWS Lambda 함수 로깅
- C#에서 AWS Lambda 함수 로깅
- PowerShell에서 AWS Lambda 함수 로깅
AWS X-Ray를 사용하여 코드 성능 병목 현상 식별
Lambda 함수가 다운스트림 AWS 리소스, 마이크로서비스, 데이터베이스 또는 HTTP 웹 API를 사용하는 경우 AWS X-Ray를 사용하여 코드 성능 문제를 해결할 수 있습니다.
자세한 내용은 AWS X-Ray를 사용한 Lambda 함수 호출 시각화를 참조하십시오.
Lambda Insights를 사용하여 함수에 대한 시스템 수준 지표 수집
Lambda Insights는 CPU 시간, 메모리, 디스크 및 네트워크 지표를 포함하는 시스템 수준 지표를 수집합니다. 또한 콜드 스타트 및 Lambda 작업자 종료를 비롯한 진단 정보를 수집하여 Lambda 함수와 관련된 문제를 식별하는 데 도움이 됩니다.
참고: Lambda Insights를 사용하면 AWS 계정에 요금이 부과됩니다. Lambda 확장에서 사용한 호출 시간에 대해 1ms 단위로 요금이 청구됩니다.
VPC Flow Logs를 사용하여 특정 호출이 거부되거나 라우팅되지 않은 이유 확인
VPC Flow Logs를 사용하면 Amazon Virtual Private Cloud(Amazon VPC)로 들어오고 나가는 모든 네트워크 트래픽을 볼 수 있습니다.
자세한 내용은 Lambda의 네트워킹 문제 해결을 참조하세요.
참고: VPC Flow Logs를 설정한 경우 다음 변수가 적용됩니다.
- CloudWatch Logs 또는 Amazon Simple Storage Service(Amazon S3)에 흐름 로그를 게시하면 판매 로그에 대한 데이터 수집 및 보관 요금이 적용됩니다.
- Amazon VPC의 리소스에 액세스하도록 Lambda 함수를 구성하면 Lambda가 함수를 네트워크 인터페이스에 할당합니다. Lambda 함수와 관련된 네트워크 트래픽을 식별하려면 함수의 네트워크 인터페이스를 찾아야 합니다. 지침은 Lambda에서 생성한 탄력적 네트워크 인터페이스를 분리하거나 삭제할 수 없는 이유는 무엇입니까?를 참조하십시오.
HTTP 와이어 트레이스를 사용하여 호출 도중 함수 코드에 의해 생성된 네트워크 요청의 세부 로깅
자세한 내용은 HTTP 와이어 트레이스를 참조하십시오.
Lambda 함수 시간 초과 방지를 위한 모범 사례
Lambda 함수가 멱등성인지 확인
일시적인 네트워크 문제로 인해 API 호출이 예상보다 오래 걸릴 수 있습니다. 네트워크 문제로 인해 재시도 및 중복 API 요청이 발생할 수도 있습니다. 이러한 상황에 대비하려면 Lambda 함수가 멱등성인지 확인하십시오.
자세한 내용은 Lambda 함수를 멱등성으로 설정하려면 어떻게 해야 합니까?를 참조하십시오.
함수 핸들러 외부에서 함수의 정적 로직 초기화
Lambda 함수를 초기화할 때 Lambda는 호출의 초기화 단계 완료에 최대 10초를 할당합니다. 이러한 시간 제약으로 인해 초기화 코드에서는 함수 핸들러 외부에서 다음 작업을 수행하는 것이 바람직합니다.
- 라이브러리 및 종속성 가져오기
- 초기 구성 설정
- 다른 다운스트림 서비스 및 리소스와의 연결 초기화
이 정적 초기화를 통해 이러한 리소스를 샌드박스당 한 번 초기화한 다음 동일한 런타임 환경에서 앞으로의 모든 호출에 재사용할 수 있습니다.
자세한 내용은 정적 초기화 최적화를 참조하십시오.
참고: Lambda는 다운스트림 리소스에 대한 유휴 연결을 제거합니다. 함수의 지속 연결 유지를 허용하려면 사용하는 Lambda 런타임과 연결된 TCP keepAlive 변수를 사용하십시오.
사용하는 AWS SDK의 재시도 횟수 및 제한 시간 설정이 함수 초기화에 충분한 시간을 허용하는지 확인
AWS SDK를 사용하여 API를 호출했는데 호출이 실패하면 AWS SDK가 자동으로 호출을 재시도합니다. AWS SDK가 재시도하는 횟수와 각 재시도 기간은 각 AWS SDK마다 다른 설정에 따라 결정됩니다. 함수 초기화에 기본 AWS SDK 설정에서 허용하는 시간보다 더 많은 시간이 필요할 수 있습니다.
자세한 내용은 AWS SDK를 사용하여 Lambda 함수를 호출할 때 재시도 및 시간 초과 문제를 해결하려면 어떻게 해야 합니까?를 참조하십시오.
(선택 사항) Lambda 함수에 대해 프로비저닝된 동시성 구성
프로비저닝된 동시성은 요청된 수의 런타임 환경을 초기화하여 함수 호출에 즉시 응답할 수 있도록 준비합니다. 함수에 프로비저닝된 동시성을 설정하려면 프로비저닝된 동시성 구성의 지침을 따르십시오.
참고: 프로비저닝된 동시성을 구성하면 AWS 계정에 요금이 발생합니다. 함수 버전 또는 Lambda 함수 별칭에 프로비저닝된 동시성을 구성할 수 있습니다.
Lambda 함수에 시스템 리소스가 충분한지 확인
Lambda 함수 호출에 할당된 네트워크 대역폭 및 CPU의 양은 함수의 메모리 구성에 따라 결정됩니다.
자세한 내용은 메모리 및 컴퓨팅 성능을 참조하십시오.
함수 핸들러가 문자열을 반환하기 전에 Lambda 함수에서 사용하는 모든 백그라운드 프로세스가 완료되었는지 확인
자세한 내용은 AWS Lambda에서의 컨테이너 재사용 이해를 참조하십시오.
Lambda 함수가 모든 통합 AWS 서비스의 최대 제한 시간 설정 내에서 작동하도록 구성되어 있는지 확인
Lambda 함수의 최대 호출 제한 시간이 15분이더라도 다른 AWS 서비스의 제한 시간은 다를 수 있습니다.
예를 들어, Amazon API Gateway는 Lambda 함수 프록시 호출이 완료될 때까지 최대 29초 동안 대기합니다.
자세한 내용은 API Gateway를 Lambda 함수와 통합할 때 발생하는 오류를 해결하려면 어떻게 해야 합니까?를 참조하십시오. 또한 다른 AWS 서비스의 이벤트와 함께 Lambda 호출을 참조하십시오.
함수가 도달하려는 엔드포인트에 대한 유효한 네트워크 경로가 있는지 확인
네트워크 설정을 구성하려면 Amazon VPC에 있는 Lambda 함수의 시간 초과 문제를 해결하려면 어떻게 해야 합니까?의 지침을 따르십시오.
