0

我的壓力,現在測試我的後臺,似乎當我做了很多電話在短時間內我打的線程拉姆達限制,並得到了以下錯誤:如何決定在AWS的SNS,SQS或Kinesis之間排隊調用我的lambda函數?

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

目前我的架構像這樣:

(API網關) - >(波長) - >(DynamoDB)

我想,以避免上述問題的最好辦法是實施排隊。我在網上讀到,這可以通過一系列不同的方式完成,即通過SNS,SQS和Kinesis。這些將會是:

A)最適合我當前的體系結構要求最小的集成?

B)並能解決我的線程問題?

C)爲什麼?

謝謝

+0

您可以在Lambda函數上配置多少內存?你最多可以運行1536MB嗎? JMV沒有足夠的可用內存來創建新線程。 – hellomichibye

+0

起初我以爲這是個問題,所以我把我的內存限制從512MB提升到了1024mb,並且它似乎沒有改變一件事情。思考? @hellomichibye –

+0

我不會就此進一步發表評論,因爲我已經[已經提到](http://stackoverflow.com/q/39500938/1695906)可能的解釋,並沒有得到任何反應 - 你的容器正在被重用,你沒有不正確地清理東西。這是唯一合理的解釋,爲什麼只有在短時間內有多個調用時纔會遇到問題。 –

回答

0

SNS不是隊列。 SQS根本不與Lambda集成。在這種情況下,Kinesis可能是最好的選擇。

+0

好吧 - Kinesis看起來不錯,但在文檔中(http://docs.aws.amazon.com/lambda/latest/dg/with-kinesis。 HTML)我沒有注意到API網關的任何提及。是否使用API​​網關的事實/複雜的集成或相同的事實? –