0

내가 지금 내 백엔드 스트레스 테스트이고 내가 스레드가 람다 제한하고 다음과 같은 오류가 공격 시간의 짧은 기간에 많은 호출 할 때 보인다내 람다 함수 호출을 대기열에 넣기위한 AWS의 SNS, SQS 또는 Kinesis를 결정하는 방법은 무엇입니까?

"errorMessage":"unable to create new native thread","errorType":"java.lang.OutOfMemoryError 

현재 내 아키텍처입니다 같은 :

(API 게이트웨이) -> (람다) -> (DynamoDB의)

내가 위의 문제를 방지하는 가장 좋은 방법 큐잉을 구현하는 것입니다 그림. 나는 SNS, SQS, Kinesis를 통해 다양한 방법으로이 작업을 수행 할 수 있다고 온라인에서 읽었습니다. 다음 중 어느 것입니까?

가) 가장 적은 통합이 필요한 현재 아키텍처에 가장 잘 어울리는가요?

B) 내 스레드 문제를 해결할 수 있습니까?

C) 이유가 무엇입니까?

감사합니다.

+0

람다 (Lambda) 기능에서 얼마나 많은 메모리를 구성 했습니까? 최대 1536MB로 실행하고 있습니까? JMV에 새 스레드를 만들 수있는 충분한 여유 메모리가 없습니다. – hellomichibye

+0

나는이 문제가 처음에 512mb에서 1024mb로 내 메모리 제한을 깨뜨렸다고 생각했고 그것은 한 가지를 바꾸는 것처럼 보이지 않았다. 생각? @hellomichibye –

+0

내가 [이미 언급 한] (http://stackoverflow.com/q/39500938/1695906) 가능성있는 설명과 반응이 없어 -이 컨테이너는 재사용되고 있으므로 제대로 물건을 청소하지 마십시오. 이것은 단시간에 여러 번 호출 할 때만 문제가 발생하는 이유에 대한 논리적 인 설명입니다. –

답변

0

SNS가 대기열이 아닙니다. SQS는 Lambda와 전혀 통합되지 않습니다. Kinesis는 아마도이 시나리오에서 가장 좋은 옵션 일 것입니다.

+0

Ok - Kinesis는 정상적으로 보이지만 문서 (http://docs.aws.amazon.com/lambda/latest/dg/with-kinesis. html) 나는 API 게이트 웨이를 언급하지 않았다. APi 게이트웨이를 사용하는 인스턴트 메신저/통합이 복잡하거나 같은지? –