os e process
node:os expõe as capacidades do host; process expõe o runtime do Node atual - juntos, eles impulsionam o dimensionamento de clusters, payloads de saúde e configuração do ambiente.
Busque em todas as páginas da documentação
node:os expõe as capacidades do host; process expõe o runtime do Node atual - juntos, eles impulsionam o dimensionamento de clusters, payloads de saúde e configuração do ambiente.
import { availableParallelism, hostname, totalmem, freemem } from 'node:os';
console.log({
host: hostname(),
cpus: availableParallelism(),
memFree: freemem(),
memTotal: totalmem(),
node: process.version,
pid: process.pid,
});Quando usar isso:
/health e /readyworker_threads e forks de clusterimport { 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();O que isso demonstra:
availableParallelism respeita os limites de CPU do cgroup em contêineres melhor do que o legado cpus().lengthprocess.memoryUsage().rss rastreia o conjunto residente - correlacione com eventos OOM do K8sloadavg é específico do Unix - útil em VMs Linux, menos no Windows| API | Significado |
|---|---|
process.uptime() | Segundos desde o início do Node |
process.ppid | PID do processo pai (1 no Docker após o init) |
freemem() | RAM livre do SO |
tmpdir() | Caminho do diretório temporário |
import { env } from 'node:process';
const nodeEnv = env.NODE_ENV ?? 'development';availableParallelism().| Alternativa | Usar Quando | Não Usar Quando |
|---|---|---|
| K8s metrics-server | Memória/CPU da frota | Apenas desenvolvimento local |
| Métricas de host OpenTelemetry | Observabilidade unificada | Script rápido único |
Leitura de /proc/self no Linux | Depuração profunda de contêineres | Código de aplicativo portátil |
| Metadados de instância da nuvem | Detecção de AZ/região | Metal nu on-prem |
Parallelism respeita os limites do cgroup no Kubernetes - preferível para dimensionamento de pool.
Resident Set Size - RAM física usada pelo processo - observe as tendências de OOM.
exit pula a limpeza assíncrona - prefira o desligamento gracioso e depois a saída natural.
process.env.NODE_ENV - valide com Zod na inicialização.
Caminhos da home do usuário - raro em contêineres de servidor - prefira caminhos de configuração explícitos.
Define o título do processo para visibilidade em ps - conveniência operacional opcional.
argv são argumentos do usuário; execArgv são flags do node como --import tsx.
freemem é a visão do host - o limite do cgroup precisa do sistema de arquivos cgroups ou de um agente externo para uma margem precisa.
Retorna win32 - a semântica de caminho e sinal diferem do Linux.
version, uptime, pid, elu opcional - evite o dump completo do host publicamente.
O Módulo Cluster usa availableParallelism.
Relatório de diagnóstico em caso de falha - veja Lendo a Documentação Oficial.
Versões da Stack: Esta página foi escrita para Node.js 24.18.0 (Active LTS), npm 10+, TypeScript 5.6+, Express 5, Fastify 5 e NestJS 11.
Revisado por Chris St. John·Última atualização: 16 de jul. de 2026