El modelo asíncrono
Bucle de eventos, promesas y todo lo que congela un servidor Node.
El modelo asíncrono
Un endpoint que respondía en 30 milisegundos pasa a responder en 4 segundos, pero solo cuando se solicita otro endpoint. Los dos no comparten ningún código, ni base de datos, ni bloqueo. Las trazas de ejecución muestran un tiempo de procesamiento normal en la aplicación; lo que se dispara es el tiempo entre la llegada del paquete y el inicio del procesamiento. Ninguna herramienta de profiling clásica muestra al culpable, porque el culpable no está en el camino observado.
Este escenario es la firma de un bucle de eventos bloqueado, y es el modo de fallo más frecuente y más desconcertante de Node. Una sola llamada síncrona costosa —una lectura de archivo con readFileSync, un JSON.parse sobre tres megabytes, una expresión regular catastrófica, un hash bcrypt con un factor de coste elevado— basta para dejar en espera todas las demás peticiones del proceso. Esta lección te da el modelo mental exacto de lo que ocurre y, a continuación, las herramientas para medirlo y corregirlo.
Pila, cola de mensajes, bucle
Node ejecuta tu JavaScript en una única pila de llamadas. Cuando la pila se vacía, el bucle de eventos mira qué está listo y apila la siguiente unidad de trabajo. Este bucle no es una cola única: recorre fases sucesivas, una y otra vez, mientras quede trabajo.
Comentarios
Los comentarios funcionan con GitHub Discussions
Inicia sesión con GitHub para participar en la discusión