2017-08-09 105 views
0

我目前正在使用Amazon EC2實例處理我們物聯網產品的通信(開發階段)。我在擴展我們實例的規格以克服未來設備的增長方面經驗不足。因此,我正在考慮使用AWS Lambda並將EC2實例中的所有業務邏輯移至lambda。但是現在,有一些我不明白的東西。適用於物聯網的AWS Lambda

  1. 在我的lambda函數的高級設置下,我可以爲我的Lambda函數設置內存分配。如果我設置了512MB的內存,如果我的功能需要512MB以上的內存,它會自動擴展嗎?

  2. 是我爲每次執行使用的lambda函數設置的內存?例如,我有30個需要同時處理的請求。如果我的Lambda函數將被執行30次,這是否意味着我的30次執行只能使用高達512MB的內存?或者我有512mb的內存可用於每次執行?

  3. 該文檔指出,亞馬遜可能會重用函數的實例。因此,如果我有兩個請求同時發生,並且亞馬遜重用了現有的函數副本,那麼這是否意味着我的函數實例將一次處理兩個請求?

  4. 每次發出請求時都會建立與數據庫的連接。這個連接會被保留嗎?如果它被保留,那麼當函數實例終止時連接將被終止?

回答

2
  1. 如果您將內存設置爲512MB,則每次調用將會有確切的向它提供的512MB內存。該設置定義了您的函數的每個調用將能夠使用的最大值。

  2. 是的,它是每次執行(調用)。

  3. 它將重複使用相同的函數進行後續調用。它不會爲併發調用重用一個函數。如果您有2個併發函數執行,它們將由2個獨立的Lambda函數實例執行。

  4. 如果您在初始化Lambda函數時創建數據庫連接,而不是等待處理程序被調用,那麼您可以在函數的單個實例的多個調用中保留該數據庫連接。但是,當您的函數實例被終止時,它將無法優雅地關閉數據庫連接。我更願意使用帶有REST API的數據庫,如DynamoDB,並儘可能使用AWS Lambda函數來避免處理長期數據庫連接的問題。

+0

嗨,謝謝你的回答!這使我更清楚。只是一個後續問題。對於問題4,如果每次完成查詢或更新時關閉數據庫連接,該怎麼辦?這將是一個很好的解決方案,以避免長期數據庫連接? –

+0

每次打開和關閉連接都可以解決一些問題,但它可能會導致其他問題,如通常較慢的Lambda函數。這很大程度上取決於您正在使用的數據庫。 –

相關問題