Mi servidor va lento: cómo revisar la RAM, la CPU y el disco
Si tu servidor va más lento, mira tres cosas: la RAM, la CPU y el disco. Conéctate y ejecuta tres comandos: free -h para la memoria, top para el procesador y df -h para el disco. El que esté lleno es el cuello de botella. Si los tres tienen buen aspecto, el problema suele estar en la propia aplicación.
Empieza por la carga
La carga media es el número medio de procesos que esperan a la CPU o al disco. Los tres primeros números de la salida de abajo son las medias de los últimos 1, 5 y 15 minutos. Compáralos con tu número de núcleos:
cat /proc/loadavg
nproc
Si la carga se mantiene por encima del número de núcleos durante mucho tiempo, el servidor no da abasto con su trabajo.
RAM: free -h
free -h
La columna más importante es available. Si es muy pequeña y la fila Swap se va llenando, te has quedado sin RAM. Cuando se agota la memoria, el kernel mata uno de los procesos que más memoria usan (el OOM killer). Una base de datos o una aplicación web que se cierra sola suele ser señal de esto. Compruébalo así:
sudo dmesg -T | grep -i -E "out of memory|killed process"
CPU: top
top
En la pantalla que se abre, la tecla P ordena los procesos por uso de CPU y la tecla M los ordena por uso de memoria. Pulsa q para salir. En la línea de CPU de arriba, fíjate en esto:
- us: la parte de los procesos de usuario. Si es alta, una aplicación se está comiendo la CPU.
- wa: tiempo de espera de entrada y salida de disco. Si es alto, el problema no es la CPU sino el disco.
- st: tiempo "robado" al servidor virtual, es decir, tiempo que la capa de virtualización dio a la CPU para otra cosa. Si se mantiene alto, puede que el problema no esté dentro de tu servidor. En ese caso, contacta con soporte.
Disco: df -h
df -h
df -i
El primer comando muestra el espacio usado y el segundo muestra el límite de número de archivos (inodos). Cuando el disco está completamente lleno, las bases de datos y las aplicaciones no pueden escribir, y el servidor va lento o da errores. Averigua qué ocupa el espacio:
sudo du -xh / --max-depth=1 2>/dev/null | sort -h | tail -n 8
Si los registros del sistema han crecido, puedes reducirlos con sudo journalctl --vacuum-size=200M. Si usas Docker, docker system df muestra el espacio que usan las imágenes y los contenedores, y docker stats --no-stream muestra cuánta CPU y memoria usa cada contenedor.
Síntoma, causa probable y solución
| Síntoma | Causa probable | Qué hacer |
|---|---|---|
| Las páginas van lentas de vez en cuando, available es bajo, el swap está lleno | RAM insuficiente | Apaga los servicios que no necesites y reduce los ajustes de memoria de la aplicación (por ejemplo, el número de workers de PHP-FPM o la memoria de la base de datos). Si no basta, amplía el servidor. |
Un servicio se cierra solo, "killed process" aparece en la salida de dmesg | Se agotó la memoria y entró el OOM killer | Añade RAM o reduce el uso de memoria. |
Un proceso en top mantiene un núcleo entero ocupado todo el tiempo | Un proceso atascado, un plugin defectuoso o un bucle | Encuentra el proceso y luego corrige o desactiva la aplicación o el plugin que lo causa. |
| La carga es alta, la CPU está libre, wa es alto | Se está esperando al disco (muchas escrituras o swap) | Mira las columnas si y so en vmstat 1 5. Si se usa swap, añade RAM. |
df -h o df -i está lleno | Sin espacio en disco o sin inodos | Limpia los archivos grandes y los registros. Si sigue llenándose, amplía. |
| st se mantiene alto | El problema puede estar fuera de tu servidor | Contacta con soporte. |
En Seturack, la velocidad del disco de cada servidor tiene un límite: 500 MB/s sostenidos y 20.000 IOPS en lectura, y 200 MB/s y 8.000 IOPS en escritura. Si tus valores en la salida de iostat -x 1 5 están en estas cifras, la carga del disco es lo que te ralentiza. Reduce el trabajo con caché o repártelo en el tiempo. Si iostat no está, instálalo con sudo apt install -y sysstat.
¿Cuándo ayuda el swap?
El swap usa el disco en lugar de la RAM. Permite al servidor superar picos cortos de memoria sin el OOM killer, pero no es tan rápido como la RAM. Si si y so en la salida de vmstat 1 5 se mantienen por encima de cero, el servidor está escribiendo constantemente en el swap. La solución es la RAM, no el swap. Si no tienes swap (swapon --show no muestra nada) y quieres suavizar los picos, puedes añadir un archivo de swap de 2 GB. Estos comandos son para un sistema de archivos ext4:
sudo fallocate -l 2G /swapfile && sudo chmod 600 /swapfile
sudo mkswap /swapfile && sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Si los recursos parecen bien
Si la RAM, la CPU y el disco tienen margen, mira el nombre del proceso que aparece arriba en top:
- Si arriba están
php-fpm,apache2onginx, el problema suele estar en el propio sitio: un plugin pesado, falta de caché o un salto repentino de visitantes. - Si arriba están
mysqldomariadbd, hay consultas lentas. Activa el registro de consultas lentas de la base de datos y mira cuáles tardan. - Si un proceso que no reconoces sigue comiéndose la CPU, puede que el servidor haya sido comprometido. Cambia tus contraseñas, revisa las sesiones abiertas y la salida de
sudo ss -tulpn, y reinstala el servidor con un sistema limpio si hace falta.
Cuándo ampliar
El orden es: primero ajusta, luego añade caché y apaga el trabajo innecesario. Si después la carga sigue alta, amplía el servidor. En el panel, abre la pestaña Tamaño de tu servidor, mueve los controles deslizantes al nuevo tamaño y confirma. Tras el pago, el servidor se reinicia una vez por sí solo y vuelve con el nuevo tamaño. Tu dirección IP y tus datos siguen igual, y solo pagas la diferencia por los días restantes. Puedes aumentar la RAM, los vCores y el disco por separado, así que solo subes lo que se queda corto. Al ampliar, el disco crece; al reducir, el disco no se encoge. Para más detalles, consulta el artículo sobre ampliar.
Si el servidor no responde en absoluto por la carga, puede que SSH no conecte. En ese caso, abre la consola VNC desde el panel o reinicia el servidor desde el panel.
Comentarios0
Todavía no hay comentarios
Sea la primera persona en compartir su opinión.
Inicie sesión o regístrese para dejar un comentario.