Estamos ejecutando una sola instancia de NodeJS en un pod con una solicitud de 1 CPU y sin límite. Tras la prueba de carga, observamos lo siguiente:
NAME CPU(cores) MEMORY(bytes) backend-deployment-5d6d4c978-5qvsh 3346m 103Mi backend-deployment-5d6d4c978-94d2z 3206m 99MiSi NodeJS solo ejecuta un único subproceso, ¿cómo podría consumir más de 1000 millones de CPU, cuando se ejecuta directamente en un nodo, solo utilizaría un único núcleo? ¿Kubernetes de alguna manera le está prestando tiempo a través de los núcleos?
Aunque Node.js ejecuta el código de la aplicación principal en un solo subproceso, el tiempo de ejecución de Node.js es multiproceso. Node.js tiene un grupo de trabajadores interno que se usa para ejecutar tareas en segundo plano, incluida la E/S y ciertos procesamientos intensivos de CPU, como las funciones criptográficas. Además, si usa la instalación de worker_threads (que no debe confundirse con el grupo de trabajadores), accederá directamente a subprocesos adicionales en Node.js.