Lambda.TooManyRequestsException 오류에서 배우기
This is a post in English written by a Taiwanese. I try to start writing in English to reach a larger community. I'm not fluent yet, so please give me feedback and corrections if you find any errors.
Lambda.TooManyRequestsException 오류를 조사하여 무엇을 알 수 있습니까?
현재 저는 OTT 회사의 결제팀에서 일하고 있으며 고객 결제 거래를 처리합니다. 우리는 고객이 쉽게 결제할 수 있도록 가능한 한 많은 결제 방법을 제공하려고 노력합니다. 즉, PayPal, Adyen 등과 같은 제3자 공급자와 많은 결제 조정을 수행해야 합니다.
우리는 AWS Step Function 위에 이 비동기식 워크플로를 구축했습니다. 어느 날 고객이 12월 8일에 PayPal 계정으로 두 번 결제한다고 불평하지만 백엔드 콘솔에 인보이스가 하나만 표시됩니다.
AWS StepFunction 콘솔을 확인한 후 이 오류를 발견했습니다.
Rate Exceeded. (Service: AWSLambda; Status Code: 429; Error Code: TooManyRequestsException;)
질문:
스로틀이란 무엇입니까? 왜 그리고 얼마나 자주 발생합니까?
이 훌륭한 기사lambda-troubleshoot-throttling에 따라 이 비율이 예외를 초과하는 문제를 해결하기 시작합니다.
계정 수준에서 제한을 확인하는 가장 쉬운 방법은 AWS Lambda 대시보드입니다.
계정 수준에 대한 개요를 제공합니다. 이 대시보드에서는 많은 람다 함수가 12/8에 제한되었음을 보여줍니다. 스로틀링이 계정 수준에서 발생한다고 추측할 수 있습니다.
애플리케이션 수준
concurrentExecutions
지표에 따르면 최대 동시성은 없었지만 12/8에 여전히 하나의 스로틀 지표를 얻었습니다. 이제 예외의 이유가 정말 분명해졌습니다. 람다 함수의 전체 계정 동시성 제한에 도달하여 이 애플리케이션을 임의로 제한했습니다. 그날 이후 SRE 팀은 AWS에 계정 한도를 늘려달라고 요청했습니다. 그러나 이러한 결제 거래 프로세스의 중요성을 고려할 때 계정 한도를 높이는 것만으로는 충분하지 않습니다.Lambda.TooManyRequestsException을 피하는 방법은 무엇입니까?
Aws는 특정 Lambda 함수에 전용 리소스를 할당하는 두 가지 옵션을 제공합니다.
예약된 동시성을 설정할 때 aws는 이 AWS Lambda에만 전용 동시성 번호를 할당합니다. 그러나 반면에 이 AWS Lambda는 이 예약된 동시성 번호만 사용할 수 있습니다. 자동 확장이 쉽지 않습니다. 또한 AWS는 중복된 경우에도 이러한 전용 동시성 할당량을 해제하지 않습니다.
프로비저닝된 동시성은 AWS Lambda 콜드 스타트를 방지하기 위한 기본 사전 로드 기능입니다. AWS Lambda에 대한 aws 애플리케이션 자동 확장을 지원합니다. 예약된 동시성과 비교할 때 훨씬 더 많은 유연성을 제공하지만 AWS Lambda를 워밍업할 때 추가 비용이 듭니다.
둘 다 Lambda.TooManyRequestsException으로부터 비동기 트랜잭션 흐름을 보호할 수 있지만 이것이 최선의 방법일까요?
다시 시도해도 될까요?
실패는 다양한 요인에서 발생합니다. 재시도는 일부 서비스가 실패할 때 가장 간단한 전략 중 하나입니다. 그러나 대부분의 Lambda 함수는 멱등성이 아니므로 이를 장애 조치 메커니즘으로 추가하기 전에 두 번 생각해야 합니다.
다행스럽게도 송장 조정을 수행하기 위해 비동기 트랜잭션 흐름에서 오류 처리를 구현합니다. 이 경우 해당 단계를 다시 시도하면 됩니다.
참조:
Reference
이 문제에 관하여(Lambda.TooManyRequestsException 오류에서 배우기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/limoritakeu/learn-from-lambda-toomanyrequestsexception-error-48lk텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)