3

나는 최근에 람다와 놀았으며 API 게이트웨이와 람다를 사용하여 API를 만드는 중입니다. JSON과 함수를 호출하는 API 게이트웨이 끝점을 반환하는 람다 함수가 있습니다. 이 간단한 설정으로 모든 것이 잘 작동합니다.AWS Lambda - sync vs async

loadtest npm 모듈로 API 게이트웨이 엔드 포인트에로드 테스트를 시도했습니다. 람다는 동시 요청을 처리하지만 (실행 과정에서 평균 대기 시간이 늘어 났음에도 불구하고), 초당 40 건의 요청을 보내면 오류를 던지고 요청을 부분적으로 만 완료합니다.

기본적으로 람다 호출은 사실상 동기식 인 RequestResponse 유형 (현재 API가 수행하고있는 유형)이며, 비 블로킹 인 것으로 보입니다. 비동기 호출의 경우, 호출 유형은 이벤트입니다. 그러나 lambda는 비동기 호출의 반환 형식을 무시하고 API는 아무 것도 반환하지 않습니다.

AWS와 관련하여 sync, async 또는 concurrency 정의 중 하나라도 누락 되었습니까? 이 문제에 접근하는 더 좋은 방법이 있습니까? 모든 통찰력이 도움이됩니다. 고맙습니다!

답변

2

API 게이트웨이에서 응답을 받으려면 동기 실행을 사용해야합니다. 이 시나리오에서는 비동기 실행을 사용하는 것이 타당하지 않습니다. 나는 당신이 놓치고있는 것 같아요, 각각의 람다 실행이 차단되고, 단일 스레드가 진행되는 동안, 여러 람다 서버 환경에서 실행중인 함수의 인스턴스가 여러 개있을 것입니다.

안전상의 이유로 기본 Lambda 실행 횟수는 상당히 적습니다. 이는 실수로 람다에 대해 배우는 동안 돈이 많이 드는 런 어웨이 람다 프로세스를 실수로 작성하는 것을 방지하기위한 것입니다. 계정의 Lambda 동시 실행 제한은 request an increase이어야합니다.

+0

우수! 그게 내가 지금까지 수집 한 것이지만, 문서가 조금 모호하게 보였다. 나는 더 높은 동시성 (나는 그것을 40으로 밀어 넣음)이 평균 대기 시간을 증가 시켰다는 것을 알아 차렸다. 우리가 언급 한 것처럼 100 개의 동시 임계 값 한도 이하로 작동하고 있기 때문입니까? 요청 된 동시성이 높아지면 속도는 좋아질 것입니다. (람다 함수의 메모리와 비슷한 경험이 있었는데 128megs로 잘라 내지 못했습니다 - 평균 대기 시간은 약 6 초였습니다. 메모리를 512로 늘리면 800ms가되었습니다.) – user3830673

+0

예, 한도를 늘리면 대기 시간 증가없이 더 높은 동시성을 얻을 수 있습니다. 귀하의 한도가 증가한 후에도 효과가 있다면 듣고 싶습니다. –

+0

반복적 인 성능 향상을 위해 API 게이트웨이에서 캐싱을 활성화하는 방법을 살펴볼 수도 있습니다. 또한 API 게이트웨이의 속도 제한 설정이 동시 요청을 지원하려는 수준 이하로 제한하지 않도록 할 수 있습니다. –