"El sitio va lento" y "da error 500" casi siempre tienen una causa visible en las cifras del servidor, siempre que alguien las esté mirando. Esta guía explica qué métricas importan, cómo interpretarlas en Linux y qué umbrales indican un problema.
CPU y load average
El comando uptime (o top) muestra tres valores de load average: el promedio de 1, 5 y 15 minutos de procesos ejecutándose o esperando CPU y disco.
$ uptime
14:02:11 up 32 days, load average: 3.84, 2.10, 1.75
$ nproc
4
La regla práctica: compara el load con el número de núcleos. En una máquina de 4 núcleos, un load de 3,8 está cerca del límite; 8 significa que hay el doble de trabajo del que la CPU puede atender. Si el load es alto pero el uso de CPU es bajo, el cuello de botella suele ser el disco (revisa iowait en top).
Memoria: "available" es la cifra que importa
$ free -h
total used free shared buff/cache available
Mem: 3.8Gi 1.9Gi 210Mi 45Mi 1.7Gi 1.6Gi
Swap: 2.0Gi 120Mi 1.9Gi
Linux usa la memoria libre como caché de disco, así que un valor free bajo es normal. Fíjate en la columna available. Señales de alerta:
- available por debajo del 10 % del total de forma sostenida;
- swap en aumento continuo, lo que ralentiza todo;
- mensajes del OOM killer (
dmesg | grep -i oom) matando MySQL o PHP-FPM.
Disco: la causa n.º 1 de caídas repentinas
$ df -h /
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 80G 76G 4.0G 95% /
# ¿qué está ocupando espacio?
$ du -xh / --max-depth=2 2>/dev/null | sort -h | tail -15
Con el disco lleno, las bases de datos dejan de escribir, las sesiones de PHP fallan y el servidor web responde 500. Los culpables habituales: logs sin rotación, backups locales acumulados, cachés de aplicación e imágenes de Docker antiguas. Revisa también los inodos con df -i: millones de archivos pequeños pueden agotarlos aunque quede espacio libre.
Tabla de referencia de umbrales
| Métrica | Saludable | Atención | Crítico |
|---|---|---|---|
| Load (÷ núcleos) | < 0,7 | 0,7 – 1,0 | > 1,0 sostenido |
| Memoria disponible | > 20 % | 10 – 20 % | < 10 % u OOM |
| Swap usada | ~0 | En aumento | > 50 % |
| Disco usado | < 75 % | 75 – 90 % | > 90 % |
Del comando puntual a la monitorización continua
Los comandos anteriores responden a "cómo está ahora". Para evitar incidentes necesitas el histórico (¿el disco crece un 2 % al día?) y una vista de todos los servidores juntos. Ahí entra la monitorización continua:
- EzServer recopila CPU, memoria, disco y carga de cada servidor periódicamente, por SSH y sin agentes.
- Un panel único con todos los servidores y gráficos de evolución.
- Apps para Android e iOS para revisar la salud de la infraestructura desde cualquier lugar.
- El Asistente de IA explica la salida de los comandos y sugiere el siguiente paso del diagnóstico.
df -h → 2) free -h → 3) uptime → 4) systemctl --failed → 5) últimos errores en journalctl -p err -n 50.