Diagnosticar una alta carga en un VPS | INTROSERV
EUR
european

EUR

usa

USD

Spanish Es
Ex. VAT Ex. VAT 0%

Diagnosticar una alta carga en un VPS

Usando htop, top e iotop-c para encontrar el proceso culpable

Cuando tu VPS comienza a retrasarse – SSH se siente retrasado, los sitios web responden lentamente, o incluso escribir en la terminal parece lento – generalmente significa que uno o más recursos del sistema (CPU, RAM o disco I/O) están siendo llevados al límite. Esta guía te lleva a través de un proceso práctico, paso a paso, para identificar qué está sucediendo y qué proceso es el culpable, utilizando tres herramientas estándar de Linux: htop, top e iotop-c.

Info

Se asume que la audiencia son administradores de sistemas principiantes a intermedios familiarizados con la línea de comandos y conceptos básicos de Linux.

Paso uno: Saber qué significa realmente "alta carga"

Mucha gente ve un "promedio de carga" alto y entra en pánico, pero no todas las cargas altas son malas. Aclarémoslo.

¿Qué es el "promedio de carga"?

El "promedio de carga" te dice cuántos procesos están esperando por la CPU en un momento dado. Se muestra como tres números (para los últimos 1, 5 y 15 minutos).

Ejemplo: uptime

Salida:

17:41:25 up 2 days, 3:45, 1 user, load average: 2.34, 1.89, 1.42

Interpretación:

  • 2.34 – carga promedio en el último minuto
  • 1.89 – en los últimos 5 minutos
  • 1.42 – en los últimos 15 minutos

Ahora, compara esos números con tu conteo de núcleos de CPU. Si tienes 2 núcleos:

  • Una carga alrededor de 2.0 significa que ambas CPUs están completamente utilizadas – el sistema está ocupado, pero bien.
  • Una carga mucho mayor que 2.0 (como 3 o 4) significa que hay una cola – demasiados procesos están esperando.

Verifica cuántos núcleos tienes:

nproc

Si la carga ≫ número de núcleos durante mucho tiempo, es hora de investigar.

Paso dos: Obtén una visión general rápida con htop

htop es la forma más fácil de visualizar lo que está sucediendo dentro de tu VPS en tiempo real.

Instalar htop

Usa el comando adecuado para tu distribución de Linux para instalar:

  • sudo apt install htop para Ubuntu/Debian
  • sudo yum install htop para CentOS/RHEL

Ejecutarlo

Ejecuta el comando htop. Verás una interfaz colorida como esta:

interfaz de htop mostrando barras de CPU, barras de memoria y lista de procesos

Entendiendo el diseño

  • Barras superiores muestran el uso de CPU, memoria e intercambio en tiempo real.
  • Promedio de carga es visible en la esquina superior derecha.
  • La lista de procesos muestra qué está ejecutándose y cuánta CPU y RAM usa cada proceso.

Consejos de navegación

  • Ordenar por uso de CPU: presiona F6, luego elige "PERCENT_CPU"
  • Ordenar por memoria: presiona F6, elige "PERCENT_MEM"
  • Vista de árbol (mostrar procesos padre/hijo): presiona F5
  • Matar un proceso: resáltalo – presiona F9 – elige señal (por defecto es 15, "terminar")
  • Buscar un proceso: presiona F3, escribe parte de su nombre (por ejemplo, "nginx")

Qué buscar

  • Procesos con alto % de CPU – estos están consumiendo la mayor parte del tiempo de CPU.
  • Procesos con alto % de MEM – estos están consumiendo RAM y pueden estar forzando al sistema a intercambiar.
  • Si un proceso sigue apareciendo en la parte superior cada pocos segundos, podría ser un script en bucle o un servicio que se reinicia.

Ejemplo

Ejecuta htop. Si ves algo como:

htop mostrando el proceso msty-local-studio en la parte superior consumiendo alta CPU y memoria

Está claro que msty-local-studio con PID 6346 está usando más CPU y memoria que todo lo demás. Ahora sabes dónde enfocar tus próximas verificaciones.

Paso Tres: Verificar con top

Mientras que htop es amigable, top está disponible en cada sistema Linux – no se requiere instalación. Es un buen respaldo cuando solo tienes acceso SSH a un entorno mínimo.

Ejecutarlo

Ejecuta el comando top. Verás una interfaz como esta:

interfaz del comando top mostrando resumen del sistema y lista de procesos

Puntos clave

  • La línea %Cpu(s) muestra a dónde va el tiempo de CPU:
    • us – procesos de usuario
    • sy – tareas del sistema/núcleo
    • wa – esperando por I/O (disco)
  • %wa (espera de I/O) por encima del 10–15% a menudo significa un cuello de botella en el disco.
  • El promedio de carga y el resumen de tareas te dicen cuán ocupado está el sistema.

Atajos de teclado útiles

  • Shift + P – ordenar por CPU
  • Shift + M – ordenar por memoria
  • Shift + T – ordenar por tiempo de ejecución del proceso
  • 1 – alternar uso de CPU por núcleo
  • k – matar un proceso (ingresa PID cuando se te pida)
  • q – salir de top

Cuándo usar top

Usa top cuando:

  • htop no está instalado (como en un sistema de rescate o contenedor Docker).
  • Quieres una herramienta ligera que muestre el equilibrio CPU vs. I/O en tiempo real.

Paso Cuatro: Si la CPU y la RAM se ven bien – Verifica el I/O del disco usando iotop-c

A veces todo parece normal – el uso de CPU no es alto, la memoria está bien – pero el sistema se siente congelado. Comandos como ls o cd se cuelgan por segundos, y el promedio de carga sigue siendo alto. Eso es un signo clásico de espera de I/O, donde la CPU está inactiva pero esperando que se completen las operaciones de disco.

Instalar iotop-c

Usa el comando adecuado para tu distribución de Linux para instalar:

  • sudo apt install iotop-c para Ubuntu/Debian
  • sudo yum install iotop-c para CentOS/RHEL

Habilita la monitorización de IO usando el comando:

sudo sysctl kernel.task_delayacct=1

Ejecutarlo

Ejecuta el comando como usuario root: sudo iotop-c. Verás una interfaz como esta:

interfaz de iotop-c mostrando actividad de I/O de disco por proceso

Interpretación

  • La columna IO muestra cuánto tiempo cada proceso está bloqueado esperando por I/O.
  • Alto IO (por ejemplo, 90–100%) – ese proceso está esperando mucho en el disco.
  • Verifica si estás ejecutando copias de seguridad, importaciones de datos grandes o trabajos de compresión.

Causas comunes de sobrecarga de I/O

  • Base de datos (mysqld, postgres) ejecutando una consulta grande.
  • Scripts de copia de seguridad (rsync, tar, dd) copiando archivos masivos.
  • Archivos de registro creciendo incontrolablemente en /var/log.
  • Intercambio mal configurado – si el sistema comienza a intercambiar mucho, satura el disco.

Paso Cinco: Correlaciona lo que encontraste

Ahora que has usado htop, top e iotop-c, es hora de armar el rompecabezas.

Síntoma Causa probable Herramienta para verificar
Alto uso de CPU Script con errores, proceso pesado htop, top
Alto uso de memoria Fuga de memoria, demasiados trabajadores htop
Alta espera de I/O, respuesta lenta Cuello de botella en el disco, intercambio iotop-c, top
Alta carga pero CPU inactiva Exhaustión de I/O o memoria top, iotop-c

Además, verifica los registros del sistema en busca de advertencias:

journalctl -xe

o:

tail -n 50 /var/log/syslog

Puedes encontrar mensajes sobre errores del núcleo, montajes fallidos o procesos siendo terminados por el OOM (Out Of Memory) killer.

Paso Seis: Toma acción

Una vez que identifiques al culpable, decide qué hacer a continuación.

Reinicia o detén el proceso

sudo systemctl restart <service>

o, si es necesario:

sudo kill -9 <pid>

Libera espacio en disco

Si el uso del disco es alto, usa df -h para determinar qué partición limpiar, o sudo du -sh /var/log/* para determinar qué registros limpiar.

Reduce la carga del proceso

  • Limita los trabajos cron para que no se ejecuten al mismo tiempo.
  • Ajusta los límites de consulta de la base de datos o el almacenamiento en caché.
  • Reduce el conteo de trabajadores en Nginx, Apache o Gunicorn.

Si nada ayuda – actualiza los recursos

Si constantemente alcanzas los límites incluso con cargas de trabajo optimizadas, es hora de agregar más CPU, RAM, o cambiar a un almacenamiento más rápido (por ejemplo, de SSD a NVMe).

Paso Siete: Prevención y Monitoreo Continuo

No deberías tener que iniciar sesión manualmente y verificar la carga cada vez. Puedes configurar monitoreo y alertas con herramientas como: glances, netdata, prometheus, etc.

Comandos de referencia rápida

Objetivo Comando
Mostrar promedio de carga uptime
Ver carga de CPU/memoria visualmente htop
Vista mínima de procesos top
Monitorear actividad de disco iotop-c
Ver registros journalctl -xe

Ejemplo del Mundo Real: El Script de Respaldo Descontrolado

Pongamos todo junto con un escenario real.

Situación

  • VPS con 2 núcleos de CPU y almacenamiento SSD
  • De repente se siente muy lento – retraso en SSH, páginas web se agotan
  • uptime muestra: promedio de carga: 8.5, 7.3, 6.9 – demasiado alto para 2 núcleos.

Investigación

  1. Ejecuta htop: el uso de CPU es bajo – solo 10–15%. El uso de memoria está bien. Así que no está limitado por CPU.
  2. Ejecuta top: %wa = 40% – el sistema está esperando en I/O de disco.
  3. Ejecuta iotop-c:
    iotop-c mostrando un script de respaldo en la parte superior con alto uso de I/O

    Bingo – un script de respaldo comprimiendo un directorio enorme directamente en el disco.

Solución

  • Detén o reprograma el respaldo para que se ejecute por la noche.
  • Comprime a /tmp (en memoria) antes de mover al disco.
  • Usa ionice para reducir su prioridad de disco.

Resultado

El rendimiento del VPS vuelve a la normalidad instantáneamente.

Reflexiones Finales

Diagnosticar una alta carga no es magia – se trata de verificar sistemáticamente CPU, memoria y disco uno por uno. Usa tus herramientas como un detective:

  1. ¿Está la CPU al máximo?htop, top
  2. ¿Está la memoria llena o intercambiando?htop, top
  3. ¿Está el disco sobrecargado?iotop-c
  4. ¿Los registros lo confirman?journalctl

Una vez que identifiques el proceso culpable, puedes decidir: ajustarlo, matarlo o programarlo mejor. Con el tiempo, comenzarás a reconocer patrones – un proceso de carga pesada, demasiados trabajos cron, o una aplicación web mal configurada. Ahí es cuando dejas de apagar incendios y comienzas a gestionar como un verdadero administrador de sistemas.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA