Dawny33 Antwort ist gut, aber ich würde früher im Entwicklungsprozess beginnen.
Es ist von entscheidender Bedeutung, Ihre Cloud-Umgebung im Auge zu behalten, um sicherzustellen, dass sich Ihre Funktionen wie erwartet verhalten (einschließlich Ihrer "Produktions" -Funktionen, die möglicherweise auf einem anderen Datensatz ausgeführt werden), da sie möglicherweise Dinge aufdecken, die lokal oder mit denen sie nicht reproduziert werden können ein Testdatensatz.
Dennoch würde ich sagen, dass dieser Leistungstest, den Sie zu Optimierungszwecken durchführen, direkt vom Computer des Entwicklers aus gestartet werden sollte. Oder zumindest aus einer lokalen Umgebung, bevor Sie in die Cloud wechseln.
Der Grund, warum ich das sage, ist, dass AWS Lambdas zwar in vielen Punkten erstaunlich sind, die Tatsache, dass Sie keine vollständige Kontrolle über den Server haben, Ihre Instrumentierungsfähigkeiten jedoch einschränkt. Ich sage nicht, dass eine Instrumentierung ohne Server nicht möglich ist, aber versuchen Sie aus Spaß herauszufinden, wie viele CPU-Interrupts Sie haben (und wie viele durch Ihren Code verursacht werden ).
Ich rate also, und dies ist eigentlich nicht auf serverlose Server beschränkt, die Profilerstellung frühzeitig zu starten. Die NodeJS-Profilerstellung kann mit vielen verschiedenen Tools durchgeführt werden. NewRelic, Dynatrace und AppDynamic sind einige der Hauptakteure. Es gibt auch kleinere Player, von denen einige nur als NPM-Paket installiert werden müssen (wie Nodefly). Es ist auch möglich, einige NodeJS ohne zusätzliches Werkzeug auszuführen, da in der V8-Engine ein Profiler eingebaut ist. Mit dieser Dokumentation von NodeJS können Sie loslegen.
Welches Tool Sie auch auswählen, Sie möchten es lokal installieren und Profildaten erfassen. Dies kann bedeuten, dass Sie einen Agenten ausführen oder ein Paket in Ihre package.json einfügen. In den Anweisungen Ihres Werkzeugs erfahren Sie, wie Sie es installieren. Ein guter Profiler zeigt an, wie viel Arbeitsspeicher und CPU Sie verwenden. Bessere Tools geben Aufschluss darüber, wie viele Ferngespräche geführt wurden und wie lange sie gedauert haben.
Verwenden Sie die Profildaten, die Sie mit dem Tool erhalten, um Engpässe zu identifizieren und zu beheben. Sie können beliebig viele Profile erstellen. Einige Leute (verrückt?) Werden sich die Systemaufrufe ihrer wichtigsten Funktion ansehen. Möglicherweise müssen Sie so etwas tun, wenn Sie Nanosekunden Ihrer Funktion rasieren möchten (aber dann ist AWS Lambda vielleicht nicht die beste Wahl für den Anfang).
Es ist an dieser Stelle auch erwähnenswert, dass ich nichts spezielles zu AWS Lambda erwähnt habe. Dies liegt daran, dass Ihre Optimierungen höchstwahrscheinlich nicht AWS Lambda-spezifisch sind (schließlich sollten Sie sich bei Servern ohne Server keine Sorgen um den Server / die Umgebung machen).
Stellen Sie sicher, dass nicht nur Ihr Code funktioniert, sondern auch so, wie Sie es erwarten. Überoptimieren Sie nicht, sondern behalten Sie die CPU- und Speichernutzung kritisch im Auge. Sollte ein Array mit 2 MB wirklich auf 10 MB anwachsen, wenn Sie es sortieren? Wahrscheinlich nicht.
Dann können Sie die von Dawny33 erwähnten Tools oder einige andere Tools verwenden, um zu bestätigen, dass Ihre Funktionen bei der Bereitstellung für Lambda ähnlich ausgeführt werden. Sie haben jedoch bereits ein sehr hohes Maß an Vertrauen in Ihre Funktion und müssen nur überprüfen, ob sie sich ordnungsgemäß verhalten, und sie nicht vollständig profilieren.
Ich bin möglicherweise nicht in der Lage, es vollständig zu beantworten, aber hier sind meine Ansichten aus meiner begrenzten Erfahrung mit Lambda:
monitoring
Registerkarte des Lambda angezeigt, die ungefähr so aussieht:Dies gilt auch für Drosseln / Fehler / Anzahl der Aufrufe.
quelle
Schauen Sie sich den IOpipe-Profiler an, um vollständige v8-Profiler-Dumps von Lambda-Aufrufen zu erhalten. Sie können diese in Chrome Devtools laden, um genau zu sehen, wo CPU-Zeit aufgewendet wird und wie Speicher für Ihre Funktionen verwendet wird.
Haftungsausschluss: Ich arbeite für IOpipe
quelle
Verwenden Sie den StackImpact-Agenten , um CPU- und Speicherprofile abzurufen . Weitere Details im Blogbeitrag: AWS Lambda-CPU- und Speicherprofilerstellung (Node.js) . Da der Prozess Lambda Node.js zwischen den Anforderungen einfriert, funktionieren die meisten anderen Tools möglicherweise nicht sofort.
Haftungsausschluss: Ich arbeite für StackImpact
quelle