El load del servidor virtual está muy alto

A veces me he encontrado con que un servidor va muy, muy lento, hasta el punto de que hasta cuesta teclear en la pantalla. Eso ya son casos extremos, pero no he visto ningún proceso que esté consumiendo demasiada CPU. Un día, incluso, me encontré con un servidor que estaba consumiendo un 40% de CPU pero el load estaba en 200!!!!

Sí, es raro pero, ¿por qué pasan cosas así?

Echémosle la culpa al servidor VMWare ESX, que estaba saturadísimo. Me explico:

Cuando en un servidor virtual comienzan a encolarse peticiones en la CPU y, por lo tanto, el load aumenta, puede deberse a que realmente hay un proceso que es un gran consumidor de CPU o que las CPUs virtuales tardan mucho en poder adquirir las CPUs físicas.

El segundo caso es justo lo que me encontré ese día.

La métrica de CPU ready de VMWare que aparece en la imagen anterior está indicando que las CPUs virtuales están tardando 13 segundos en adquirir a las CPUs físicas. En incidencias de mucha lentitud, he llegado a ver hasta 60 segundos.

Son tiempos realmente inaceptables. Los tiempos correctos deberían ser de unos pocos milisegundos.

Hasta que todas las CPUs virtuales no tengan acceso a las virtuales, el servidor virtual no realizará ninguna acción (de CPU) y las peticiones se encolarán (en CPU).

A veces es mejor reducir el número de CPUs virtuales

A algunos clientes le sorprende que para mejorar el rendimiento de un servidor virtual es conveniente bajar el número de CPUs virtuales de cuatro a dos, por ejemplo.

El motivo es que, si tras analizar el consumo de CPU, realmente vemos que no se necesitan cuatro CPUs virtuales, es mejor reducirlas a dos (si el consumo lo permite) porque dos CPUs virtuales tardan menos que cuatro en adquirir las CPUs físicas.

CPU Steal (CPU Robada)

Con el comando top de Linux podemos ver el parámetro CPU steal, que es el porcentaje de CPU que la maquina virtual está demandando pero el hypervisor no le está dando porque está realizando otras tareas.

[[email protected] init.d]# top
top - 12:03:09 up 19:34,  2 users,  load average: 0.46, 0.41, 0.28
Tasks: 329 total,   2 running, 326 sleeping,   0 stopped,   1 zombie
Cpu(s):  2.1%us,  0.6%sy,  0.0%ni, 97.1%id,  0.2%wa,  0.0%hi,  0.0%si,  13.1%st
Mem:  16333484k total, 15681836k used,   651648k free,   627268k buffers
Swap: 16777212k total,        0k used, 16777212k free,  7869332k cached

Veremos que este porcentaje crecerá si la métrica de CPU Ready crece. En este ejemplo, vemos que es de un 13.1% (13.0%st).

¿Te ha gustado? ¡Compártelo!

Share on facebook
Share on twitter
Share on linkedin
Share on whatsapp
Share on telegram
Share on email

Deja un comentario

Tal vez también te gustaría leer...

Instalación de Ceph Storage en Linux RedHat 7

En este artículo aprenderemos a instalar RedHat Ceph Storage en un sistema Linux RedHat 7.7, configurando un cluster de dos nodos. Tabla de contenidos1 ¿Qué es Ceph?2 Conceptos previos de Ceph3 Instalación de Ceph3.1 Requerimientos previos3.1.1 Creación de los repositorios de yum3.1.2 Instalación de los paquetes RPM de Ceph3.1.3 Arranque del servicio NTP3.2 Configuración Manual

Leer más »

Limitar los recursos de CPU y memoria en Linux RedHat

Debido a una serie de pruebas de rendimiento que querían hacer desde el equipo de aplicaciones, me han preguntado si era posible limitar los recursos de CPU y memoria a nivel global del servidor, un Linux RedHat 7. Podemos hacerlo con CGROUPS pero para este caso concreto he preferido limitar los recursos mediante parámetros del

Leer más »

GlusterFS – Filesystems con Alta Disponibilidad en Linux

Alguna vez os he hablado de ServiceGuard para montar entornos de alta disponibilidad robustos, que monten filesystems y levanten servicios, pero este es un software de pago que no quería utilizar para montar un único filesystem con alta disponibilidad. En su lugar, he elegido GlusterFS, que es opensource y con soporte de RedHat. Tabla de

Leer más »

Configurar un servidor Memcached en Linux RedHat 7

Memcached es uno de los servidores de cacheo más populares. Se utiliza para que aplicaciones externas cacheen su contenido en un servidor centralizado como, por ejemplo, páginas WEB estáticas. El objetivo es acelerar la velocidad de la aplicación accediendo al contenido que ya está en caché en vez de tener que reinterpretarlo cada vez que

Leer más »

Conexiones seguras con SSH en Linux

SSH es un protocolo de comunicaciones que proporciona seguridad criptográfica cuando nos conectamos a un servidor para iniciar una sesión o transfereir archivos por SFTP o SCP. Los comandos SSH, SFTP y SCP utilizan el mismo puerto de comunicaciones, que es el 22. Teclado Mecánico Gaming de VicTsing, 104 Teclas y… 39,88 EUR COMPRAR EN

Leer más »

Guía de Linux

Tabla de contenidos1 Historia de Linux2 ¿Qué es una distribución Linux y cuál instalar?3 ¿Cómo iniciar una sesión en Linux?4 Cinco maneras de ejecutar comandos en Linux5 Funcionamiento del editor «vi»6 Comandos básicos de Linux relacionados con el sistema de archivos7 Comandos básicos relacionados con los procesos8 Comando básicos de Linux relacionados con los filtros

Leer más »