Son las 9:47 de un miércoles. En #incident alguien pone "prod va lento". Te conectas por ssh y te quedas un momento intentando recordar si top ordena por CPU con Shift+M o Shift+P, si iostat por defecto va en MB/s o sectores, si ss -s muestra de verdad lo que quieres. No tienes que recordar nada de eso. Cinco preguntas te dan el cuadro.
1. Top por CPU
$ clai qué 10 procesos están usando más CPU ahora mismo→ ps -eo pid,user,%cpu,%mem,comm --sort=-%cpu | head -11PID USER %CPU %MEM COMMAND8821 app 84.2 12.4 java8901 app 31.1 3.2 node
Una sola muestra no es evangelio — pero es una foto instantánea, y el 95% del tiempo apunta al proceso correcto.
2. Top por RSS
$ clai top 10 procesos por memoria residente→ ps -eo pid,user,rss,%mem,comm --sort=-rss | head -11PID USER RSS %MEM COMMAND8821 app 1985432 12.4 java4567 app 1180224 7.2 node
%MEM es porcentaje; RSS son los kilobytes residentes reales. Para "quién se come la memoria" quieres RSS.
3. I/O de disco en una ventana de 10 segundos
$ clai I/O de disco por dispositivo cada segundo durante 10 segundos→ iostat -dx 1 10Device r/s w/s rkB/s wkB/s %utilsda 12.0 340.2 192.0 18432.0 87.4
%util al 87% significa que el disco es el cuello de botella ahora mismo. Sin iostat -x no tienes esa columna.
4. Memoria en unidades humanas
$ clai uso de memoria en formato legible→ free -h total used free shared buff/cache availableMem: 15Gi 12Gi 428Mi 32Mi 2.7Gi 2.6GiSwap: 2.0Gi 1.2Gi 820Mi
-h da unidades legibles. available es la columna que de verdad responde a ¿tengo memoria? — no free, que puede engañar mostrando un número bajo.
5. Conexiones de red abiertas
$ clai conexiones de red establecidas con el nombre del proceso→ ss -tnp state establishedESTAB 10.0.1.12:54322 10.0.1.50:5432 users:(("app",pid=8821))ESTAB 10.0.1.12:51002 17.253.144.10:443 users:(("clai",pid=4012))
La forma del triage
Cinco preguntas, dos minutos, tienes el cuadro: qué proceso, qué recurso, qué dispositivo, qué conexión. Habitualmente vas a correr dos o tres en cadena — top por CPU para encontrar al sospechoso, top por RSS para confirmar que es memoria, iostat para descartar disco. Más rápido que bucear por los atajos de htop.
Ver también
- Mata el proceso del puerto — continuación natural una vez identificado el sospechoso.
- Triage de red — cuando el cuello de botella resulta ser la red, no el host.