Análisis de carga del servidor
Cómo monitorizar el uso de CPU, memoria, disco y red en un servidor Linux.
La carga del servidor hace referencia al porcentaje de uso de los recursos clave: CPU, RAM y espacio en disco. Monitorizar estas métricas permite identificar rápidamente la causa de los problemas de rendimiento.
El hardware de un servidor se divide en cuatro componentes principales: CPU, memoria, disco e interfaz de red. El análisis de carga consiste en recopilar e interpretar las estadísticas de cada uno de ellos.
CPU
La utilidad top ofrece una vista básica en tiempo real del uso de la CPU:
top
Ejemplo de salida:
top - 13:29:39 up 7 days, 1:10, 1 user, load average: 0.03, 0.03, 0.00
Tasks: 104 total, 2 running, 102 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.3 us, 1.0 sy, 0.0 ni, 97.0 id, 0.0 wa, 0.0 hi, 1.3 si, 0.3 st
MiB Mem : 969.5 total, 68.8 free, 635.9 used, 264.8 buff/cache
MiB Swap: 0.0 total, 0.0 free, 0.0 used. 106.7 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
823 mysql 20 0 1852008 401812 0 S 1.0 40.5 81:24.20 mysqld
13 root 20 0 0 0 0 R 0.3 0.0 26:11.00 rcu_sched
695 redis 20 0 66776 4216 2100 S 0.3 0.4 19:55.21 redis-server
Métricas clave a vigilar:
us— tiempo de CPU consumido por procesos de usuario. Un valor alto indica que tu aplicación está ejerciendo presión sobre la CPU.id— tiempo de inactividad de la CPU. En condiciones normales debe mantenerse entre el 80 y el 100 %.wa— tiempo de espera de operaciones de E/S. Un valor alto apunta a una sobrecarga del subsistema de disco.
Si us supera el 20 % de forma constante, considera optimizar tu aplicación o escalar los recursos.
Para estadísticas por núcleo, instala mpstat desde el paquete sysstat:
apt-get install sysstat
mpstat -P ALL
Ejemplo de salida:
Linux 5.15.0-46-generic (dsde1139-22869.fornex.org) 09/06/2022 _x86_64_ (1 CPU)
02:37:21 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
02:37:21 PM all 0.90 0.00 0.74 0.13 0.00 0.96 0.32 0.00 0.00 96.95
02:37:21 PM 0 0.90 0.00 0.74 0.13 0.00 0.96 0.32 0.00 0.00 96.95
Para una vista más visual, htop muestra la carga de la CPU en un formato fácil de leer:
apt-get install htop
htop
Monitorización de la CPU en htop
Memoria
Usa el comando free para comprobar el uso de la RAM:
free
Ejemplo de salida:
total used free shared buff/cache available
Mem: 992724 655200 73968 86748 263556 104972
Swap: 0 0 0
Presta especial atención a Swap — indica cuánto espacio en disco se está usando como memoria de desbordamiento cuando la RAM se agota. Un nivel bajo de RAM libre por sí solo no es crítico, pero un Swap en crecimiento requiere acción inmediata: añade más memoria o distribuye la carga entre varios servidores.
Para un análisis detallado del uso de memoria:
cat /proc/meminfo
Ejemplo de salida:
MemTotal: 992724 kB
MemFree: 73192 kB
MemAvailable: 104864 kB
Buffers: 10856 kB
Cached: 226868 kB
SwapCached: 0 kB
...
Disco
Empieza comprobando el espacio en disco disponible:
df -h
Ejemplo de salida:
Filesystem Size Used Avail Use% Mounted on
tmpfs 97M 732K 97M 1% /run
/dev/vda1 9.8G 8.5G 846M 92% /
tmpfs 485M 0 485M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 97M 0 97M 0% /run/user/0
La columna Use% muestra qué porcentaje de espacio está ocupado en cada partición.
Para monitorizar la actividad de lectura/escritura desglosada por proceso, usa iotop:
apt-get install iotop
iotop
Ejemplo de salida:
Total DISK READ: 0.00 B/s | Total DISK WRITE: 0.00 B/s
Current DISK READ: 0.00 B/s | Current DISK WRITE: 0.00 B/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
1 be/4 root 0.00 B/s 0.00 B/s ?unavailable? init
2 be/4 root 0.00 B/s 0.00 B/s ?unavailable? [kthreadd]
...
Métricas clave:
Actual DISK READ— datos efectivamente leídos del disco (teniendo en cuenta la caché).Actual DISK WRITE— datos efectivamente escritos en el disco.
Recomendaciones ante una carga de disco elevada:
- Alta carga de lectura desde la aplicación — activa el caché APC.
- Alta carga de lectura desde la base de datos — revisa la configuración de tu base de datos.
- Alta carga de lectura desde el servidor web — considera implementar caché HTTP.
- Alta carga de escritura — asegúrate de que los logs de acceso y depuración estén desactivados; la base de datos o las subidas de archivos son los culpables más probables.
Red
La utilidad cbm muestra el tráfico de red en tiempo real por interfaz:
apt-get install cbm
cbm
Ejemplo de salida:
Interface Receive Transmit Total
lo 0.00 B/s 0.00 B/s 0.00 B/s
eth0 35.90 kB/s 758.75 B/s 36.65 kB/s
Un tráfico de red elevado no es un problema en sí mismo, pero valores sostenidos cercanos al pico son una señal para empezar a planificar la escalabilidad.
Estadísticas combinadas
La utilidad dstat muestra un resumen en tiempo real de todos los subsistemas, actualizado cada segundo:
apt-get install dstat
dstat
Ejemplo de salida:
--total-cpu-usage-- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai stl| read writ| recv send| in out | int csw
2 1 97 0 0| 35k 29k| 0 0 | 0 0 | 683 702
1 0 99 0 0| 124k 0 | 39k 1162B| 0 0 |1003 822
3 4 86 6 1|3580k 8776k| 37k 522B| 0 0 |1161 1018
Columnas clave:
total-cpu-usage— carga de la CPU.dsk/total— actividad del disco.net/total— actividad de red.
Ayuda
¿Tienes dudas o necesitas ayuda? Escríbenos a través del sistema de tickets — siempre estamos aquí para ayudarte!