Ist es möglich, eine AWS Lambda-Funktion warm zu halten?

8

Es gibt ein paar Teile meiner App, die sich die zusätzliche Verzögerung von 1-2 Sekunden nicht leisten können, verursacht durch den "Einfrieren-Auftauen" -Zyklus, den Lambda-Funktionen durchlaufen, wenn sie für eine gewisse Zeit neu oder unbenutzt sind.

Wie kann ich diese Lambda-Funktionen warm halten, damit AWS sie nicht ständig neu bereitstellen muss? Dies gilt sowohl für 1) selten verwendete Funktionen als auch 2) für kürzlich implementierte Funktionen.

Idealerweise gibt es eine Einstellung, die ich vermisst habe, "warm halten", die die Kosten der Lambda-Funktionen erhöht, aber immer eine Funktion warm hält und bereit ist zu reagieren, aber ich bin mir ziemlich sicher, dass das nicht existiert.

Ich nehme an, dass es eine Option ist, einen CloudWatch-Timer zu verwenden, um die Funktionen von Zeit zu Zeit zu pingen ... aber das fühlt sich falsch an. Außerdem kenne ich nicht das Intervall, das AWS verwendet, um Lambda-Funktionen auf Eis zu setzen.

    
samcorcos 18.03.2017, 17:25
quelle

1 Antwort

2

BBC hat einen schönen Artikel über das iPlayer-Engineering veröffentlicht, in dem sie ein ähnliches Problem beschreiben .

Sie haben sich entschieden, die Funktion alle paar Minuten mit geplanten CloudWatch-Ereignissen aufzurufen.

  

In der Theorie sollte es also einfach dort bleiben, außer vielleicht nicht. Daher haben wir ein geplantes Ereignis eingerichtet, um den Container warm zu halten. Wir rufen die Funktion alle paar Minuten auf, um keine Verarbeitung vorzunehmen, sondern um sicherzustellen, dass das Modell bereit ist. Dies ist für einen sehr kleinen Prozentsatz von Aufrufen verantwortlich, hilft uns aber dabei, die Race-Bedingungen im Modell-Download zu mindern. (Wir begrenzen künstlich, wie viele Lambdas wir parallel aufrufen, als zusätzliche Maßnahme).

    
Jonathan 12.10.2017, 08:21
quelle