La réponse de Dawny33 est bonne, mais je commencerais plus tôt dans le processus de développement.
Garder un œil sur votre environnement cloud pour vous assurer que vos fonctions se comportent comme prévu (y compris vos fonctions de «production», qui pourraient fonctionner sur un autre ensemble de données) est crucial, car cela pourrait révéler des choses impossibles à reproduire localement ou avec un ensemble de données de test.
Néanmoins, je dirais que ce test de performances que vous effectuez dans un but d'optimisation devrait commencer directement à partir de la machine du développeur. Ou, au moins, à partir d'un environnement local avant de passer au cloud.
La raison pour laquelle je le dis, c'est que même si AWS Lambdas est incroyable sur de nombreux points, le fait que vous n'ayez pas un contrôle total sur le serveur limitera vos capacités d'instrumentation. Je ne dis pas que l'instrumentation est impossible en mode sans serveur, mais essayez de déterminer combien d'interruptions CPU vous avez (et combien sont causées par votre code) juste pour le plaisir;)
Donc, ce que je conseille, et ce n'est en fait pas limité aux serveurs sans serveur, c'est de commencer le profilage tôt. Le profilage NodeJS peut être fait avec de nombreux outils différents, NewRelic, dynatrace et AppDynamic sont quelques-uns des grands acteurs. Il existe également un lecteur plus petit, certains d'entre eux ne sont qu'un package NPM à installer (comme Nodefly). Il est également possible de faire des NodeJS sans outil supplémentaire, car un profileur est intégré au moteur V8. Cette documentation de NodeJS vous aidera à démarrer.
Quel que soit l'outil que vous choisissez, vous souhaitez l'installer localement et collecter des données de profilage. Cela peut impliquer d'exécuter un agent ou d'inclure un package dans votre package.json. Les instructions de votre outil vous diront comment l'installer. Un bon profileur vous indiquera la quantité de mémoire et de CPU que vous utilisez. De meilleurs outils vous donneront un aperçu du nombre d'appels à distance effectués, de leur durée.
Utilisez les données de profilage fournies par l'outil pour identifier les goulots d'étranglement et les résoudre. Il n'y a pas de limite sur la quantité de profils que vous pouvez créer. Certaines personnes (folles?) Regarderont les appels système de leur fonction la plus critique. Vous devrez peut-être faire ce genre de chose si vous souhaitez réduire les nanosecondes de votre fonction (mais alors, peut-être qu'AWS Lambda n'est pas le meilleur choix pour commencer).
Il convient également de noter à ce stade que je n'ai rien mentionné de spécifique à AWS Lambda. En effet, vos optimisations ne seront probablement pas spécifiques à AWS Lambda (après tout, sans serveur, vous ne devriez pas vous soucier du serveur / de l'environnement).
Assurez-vous que non seulement votre code fonctionne, mais qu'il fonctionne comme vous vous y attendez. N'optimisez pas trop, mais gardez un œil critique sur l'utilisation du processeur et de la mémoire. Un tableau de 2 Mo doit-il vraiment atteindre 10 Mo lorsque vous le triez? Probablement pas.
Ensuite, vous pourrez utiliser les outils mentionnés par Dawny33, ou d'autres outils, pour confirmer que vos fonctions fonctionnent de manière similaire lorsqu'elles sont déployées sur Lambda. Cependant, vous aurez déjà un très haut niveau de confiance dans votre fonction et vous n'aurez qu'à valider qu'ils se comportent correctement, pas à les profiler complètement.
Je ne pourrais peut-être pas y répondre complètement, mais voici mes vues de mon expérience limitée avec lambda:
monitoring
onglet Lambda , qui ressemble à ceci:Il en va de même pour les étranglements / erreurs / nombre d'appels.
la source
Consultez le profileur IOpipe pour obtenir les vidages de profileur v8 complets des appels Lambda. Vous pouvez les charger dans Chrome Devtools pour voir exactement où le temps CPU est dépensé et comment la mémoire est utilisée pour vos fonctions.
Avertissement: je travaille pour IOpipe
la source
Utilisez l' agent StackImpact pour obtenir les profils CPU et mémoire. Plus de détails dans le billet de blog: AWS Lambda CPU and Memory Profiling (Node.js) . Étant donné que le processus Lambda Node.js se fige entre les demandes, la plupart des autres outils ne fonctionneront probablement pas prêts à l'emploi.
Avertissement: je travaille pour StackImpact
la source