os y process
node:os expone las capacidades del host; process expone el tiempo de ejecución actual de Node. Juntos impulsan el dimensionamiento del clúster, las cargas útiles de salud y la configuración del entorno.
Busca en todas las páginas de la documentación
node:os expone las capacidades del host; process expone el tiempo de ejecución actual de Node. Juntos impulsan el dimensionamiento del clúster, las cargas útiles de salud y la configuración del entorno.
import { availableParallelism, hostname, totalmem, freemem } from 'node:os';
console.log({
host: hostname(),
cpus: availableParallelism(),
memFree: freemem(),
memTotal: totalmem(),
node: process.version,
pid: process.pid,
});Cuándo usarlo:
/health y /readyworker_threads y forks de clústerimport { availableParallelism, hostname, loadavg, platform, arch } from 'node:os';
export function hostSnapshot() {
return {
hostname: hostname(),
platform: platform(),
arch: arch(),
nodeVersion: process.version,
pid: process.pid,
ppid: process.ppid,
uptimeSec: process.uptime(),
cpuParallelism: availableParallelism(),
loadavg1m: loadavg()[0],
memory: process.memoryUsage(),
env: process.env.NODE_ENV ?? 'development',
};
}
export function assertProductionEnv(): void {
if (process.env.NODE_ENV === 'production' && !process.env.DATABASE_URL) {
throw new Error('DATABASE_URL required in production');
}
}import { monitorEventLoopDelay } from 'node:perf_hooks';
const h = monitorEventLoopDelay({ resolution: 20 });
h.enable();
setInterval(() => {
console.log('eventLoopP99Ns', h.percentile(99), 'rss', process.memoryUsage().rss);
h.reset();
}, 30_000).unref();Lo que esto demuestra:
availableParallelism respeta los límites de CPU de cgroup en contenedores mejor que el obsoleto cpus().lengthprocess.memoryUsage().rss rastrea el conjunto residente: correlaciona con los eventos OOM de K8sloadavg específico de Unix: útil en máquinas virtuales Linux, menos en Windows| API | Significado |
|---|---|
process.uptime() | Segundos desde el inicio de Node |
process.ppid | PID padre (1 en Docker después de init) |
freemem() | RAM libre del SO |
tmpdir() | Ruta del directorio temporal |
import { env } from 'node:process';
const nodeEnv = env.NODE_ENV ?? 'development';availableParallelism().| Alternativa | Usar cuando | No usar cuando |
|---|---|---|
| K8s metrics-server | Memoria/CPU de la flota | Solo desarrollo local |
| Métricas de host de OpenTelemetry | Observabilidad unificada | Script rápido de una sola vez |
Lectura de /proc/self en Linux | Depuración profunda de contenedores | Código de aplicación portable |
| Metadatos de instancia en la nube | Detección de AZ/región | Servidor físico local |
availableParallelism respeta los límites de cgroup en Kubernetes; es preferible para el dimensionamiento de pools.
Resident Set Size (Tamaño del Conjunto Residente): RAM física utilizada por el proceso; observa las tendencias de OOM.
exit omite la limpieza asíncrona; prefiere el apagado elegante y luego la salida natural.
process.env.NODE_ENV; valida con Zod al inicio.
Rutas de inicio de usuario; raras en contenedores de servidor; prefiere rutas de configuración explícitas.
Establece el título del proceso para la visibilidad de ps; una conveniencia opcional para las operaciones.
argv son los argumentos del usuario; execArgv son las banderas de Node como --import tsx.
freemem es la vista del host; el límite de cgroup necesita el sistema de archivos cgroups o un agente externo para un margen preciso.
Devuelve win32; la semántica de rutas y señales difiere de Linux.
version, uptime, pid, elu opcional; evita volcar toda la información del host públicamente.
Módulo cluster utiliza availableParallelism.
Informe de diagnóstico en caso de fallo; consulta Lectura de la documentación oficial.
Versiones de la pila: Esta página fue escrita para Node.js 24.18.0 (LTS activa), npm 10+, TypeScript 5.6+, Express 5, Fastify 5 y NestJS 11.
Revisado por Chris St. John·Última actualización: 16 jul 2026