Herramientas de IO y Memoria
iostat, vmstat, pidstat en hosts PostgreSQL 18.4 en Linux - vincula métricas del host a PIDs de postgres durante incidentes de IO y memoria.
Busca en todas las páginas de la documentación
iostat, vmstat, pidstat en hosts PostgreSQL 18.4 en Linux - vincula métricas del host a PIDs de postgres durante incidentes de IO y memoria.
# Instantánea de IO (paquete sysstat)
iostat -xz 1 5
# Vista de memoria y planificador de CPU
vmstat 1 5
# RSS por proceso para PIDs de postgres
pidstat -r -p $(pgrep -d, -f 'postgres:') 1 5SELECT pid, wait_event_type, wait_event, state, left(query, 60)
FROM pg_stat_activity
WHERE backend_type = 'client backend' AND state = 'active';Cuándo recurrir a esto:
Síntoma: Tiempos de espera de API; CPU de Postgres 30% pero latencia alta.
iostat -xz 1 3Device r/s w/s rkB/s wkB/s %util
nvme0n1 4500 800 72000 12000 98.5SELECT queryid, calls, mean_exec_time, shared_blks_read, temp_blks_written
FROM pg_stat_statements
ORDER BY shared_blks_read DESC NULLS LAST LIMIT 5;pidstat -u -p $(pgrep -n -f 'postgres:') 1 3Interpretación:
%util cerca del 100% → disco saturadoshared_blks_read → escaneo secuencial o caché fríapidstat → correlacionar con pg_stat_activity.pid| Columna | Significado | Vínculo con Postgres |
|---|---|---|
r/s, rkB/s | Tasa de lectura | Escaneos secuenciales, lecturas de caché de índice frías |
w/s, wkB/s | Tasa de escritura | Puntos de control, WAL, autovacuum |
%util | Dispositivo ocupado | >80% sostenido es un cuello de botella |
await | Latencia de IO | await alto + util alto → límites del disco |
| Columna | Significado | Acción |
|---|---|---|
si, so | Swap in/out | Presión de memoria; riesgo de OOM |
us, sy | CPU de usuario/sistema | Alto sy durante el estado de espera de IO |
wa | Espera de IO | Coincide con la saturación de iostat |
b | Procesos bloqueados | Cola de ejecución saturada |
# RSS de todos los backends de postgres cada segundo
pidstat -r -C postgres 1 5
# Un solo backend de pg_stat_activity
pidstat -r -p 284719 1 10SELECT pid, query, work_mem_needed FROM (
SELECT pid, left(query,40) AS query
FROM pg_stat_activity WHERE state = 'active'
) q;temp_blks_written)SELECT checkpoints_timed, checkpoints_req, checkpoint_write_time, buffers_checkpoint
FROM pg_stat_bgwriter;pg_stat_activity%util primero.pg_stat_activity.work_mem agotan la RAM. Solución: agrupa conexiones, reduce el rol de work_mem por consulta.shared_buffers durante tormenta de swap - no soluciona el swap. Solución: reduce los consumidores de memoria, añade RAM, corrige consultas.| Alternativa | Usar cuando | No usar cuando |
|---|---|---|
htop | Análisis interactivo detallado | Paquete de incidentes automatizado |
| Métricas de volumen en la nube | Paneles de control de RDS/EBS | Necesita prueba por PID |
pg_stat_io (PG 16+) | Vista de IO a nivel de base de datos | Estrangulamiento de disco a nivel de host |
A menudo en bastion, no en el pod de la base de datos. Para k8s, usa un sidecar de depuración con iostat o confía en el exportador de nodos + Prometheus.
Sostenido >70-80% en volumen de datos durante OLTP requiere investigación. Los picos durante lotes nocturnos pueden ser aceptables si el SLA no se ve afectado.
apt install sysstat o yum install sysstat. Alternativa: instantáneas de ps -o pid,rss,cmd -p <pid>.
Versiones de Stack: Esta página fue escrita para PostgreSQL 18.4 en Linux con sysstat 12+ (
iostat,pidstat,vmstat).
Revisado por Chris St. John·Última actualización: 19 jul 2026