La respuesta de Dawny33 es buena, pero comenzaría antes en el proceso de desarrollo.
Mantener un ojo en su entorno de nube para asegurarse de que sus funciones se comporten como espera (incluidas sus funciones de "producción", que podrían operar en un conjunto de datos diferente) es crucial, porque puede revelar cosas que son imposibles de reproducir localmente o con Un conjunto de datos de prueba.
No obstante, diría que esta prueba de rendimiento que realiza en un propósito de optimización debe comenzar directamente desde la máquina del desarrollador. O, al menos, de algún entorno local antes de pasar a la nube.
La razón por la que lo digo es que, si bien AWS Lambdas es increíble en muchos puntos, el hecho de que no tenga un control total sobre el servidor limitará sus capacidades de instrumentación. No digo que la instrumentación sea imposible cuando no se utiliza un servidor, pero intente averiguar cuántas interrupciones de CPU tiene (y cuántas son causadas por su código) solo por diversión;)
Entonces, lo que aconsejo, y esto en realidad no se limita a sin servidor, es comenzar el perfil temprano. La creación de perfiles de NodeJS se puede hacer con muchas herramientas diferentes, NewRelic, dynatrace y AppDynamic son algunos de los grandes jugadores. También hay un reproductor más pequeño, algunos de ellos son solo un paquete NPM para instalar (como Nodefly). También es posible hacer algunos NodeJS sin ninguna herramienta adicional, ya que hay un generador de perfiles integrado en el motor V8. Esta documentación de NodeJS lo ayudará a comenzar.
Independientemente de la herramienta que elija, desea instalarla localmente y recopilar datos de creación de perfiles. Eso podría implicar ejecutar un agente o incluir un paquete en su package.json. Las instrucciones de su herramienta le indicarán cómo instalarla. Un buen generador de perfiles le permitirá saber cuánta memoria y CPU usa. Mejores herramientas le darán una idea de cuántas llamadas remotas se hicieron, cuánto tiempo tomaron.
Utilice los datos de creación de perfiles que le brinda la herramienta para identificar cuellos de botella y abordarlos. No hay límite en la cantidad de perfiles que puede hacer. Algunas personas (¿locas?) Mirarán las llamadas al sistema de su función más crítica. Es posible que tenga que hacer ese tipo de cosas si desea reducir los nanosegundos de su función (pero entonces, tal vez AWS Lambda no sea la mejor opción para comenzar).
También vale la pena señalar en este punto que no he mencionado nada específico de AWS Lambda. Esto se debe a que sus optimizaciones probablemente no sean específicas de AWS Lambda (después de todo, en serverless no debe preocuparse por el servidor / entorno).
Asegúrese de que no solo su código funcione, sino que funcione de la manera esperada. No optimices en exceso, pero mantén un ojo crítico en el uso de la CPU y la memoria. ¿Debería una matriz de 2MB realmente crecer a 10MB cuando la ordena? Probablemente no.
Entonces podrá utilizar las herramientas mencionadas por Dawny33, o algunas otras herramientas, para confirmar que sus funciones funcionan de manera similar cuando se implementan en Lambda. Sin embargo, ya tendrá un nivel muy alto de confianza en su función y solo tendrá que validar que se comporten correctamente, no perfilarlos completamente.
Es posible que no pueda responderlo por completo, pero aquí están mis puntos de vista de mi experiencia limitada con lambda:
monitoring
pestaña Lambda , que se ve más o menos así:También lo hacen los aceleradores / errores / número de invocaciones.
fuente
Consulte el generador de perfiles IOpipe para obtener volcados completos del generador de perfiles v8 de las invocaciones de Lambda. Puede cargarlos en Chrome Devtools para ver exactamente dónde se gasta el tiempo de CPU y cómo se usa la memoria para sus funciones.
Descargo de responsabilidad: trabajo para IOpipe
fuente
Use el agente StackImpact para obtener perfiles de CPU y memoria. Más detalles en la publicación del blog: AWS Lambda CPU and Memory Profiling (Node.js) . Debido a que el proceso Lambda Node.js se congela entre solicitudes, la mayoría de las otras herramientas probablemente no funcionarán de inmediato.
Descargo de responsabilidad: trabajo para StackImpact
fuente