14 votos

Algunos sistemas Linux llegar a ser muy lenta cuando Redis es la carga de un gran conjunto de datos

He recibido un informe de un Redis de usuario, y no estoy seguro de qué responder, porque yo no soy un experto en el área de Linux y su programador, sin embargo nosotros (como la Redis proyecto) necesidad de la figura de este tipo de problemas, especialmente en el futuro como con Redis Clúster vamos a tener muchos Redis instancias ejecutándose al mismo tiempo en una sola caja. Así que estoy pidiendo un poco de ayuda aquí.

Problema:

  • Núcleo: "Linux redis1 2.6.32-305-ec2 #9-Ubuntu SMP Thu Apr 15 08:05:38 UTC 2010 x86_64 GNU/Linux"
  • un montón de memoria RAM libre, no hay otros procesos haciendo importantes de I/O.
  • Importante, que se ejecuta en un EC2 gran ejemplo, no es un servidor real. Nunca vi algo parecido en un entorno virtualizado no. La instancia de EC2 fue: "Extra Grande de Alta Memoria Instancia 17.1 GB de memoria, 6.5 ECU (2 núcleos virtuales con 3.25 Unidades de sistemas EC2 cada uno), 420 GB de almacenamiento de instancias local, plataforma de 64 bits".

Básicamente, una vez que se reinicie una gran Redis ejemplo, el sistema estará tan lento que no puede escribir en el shell. Cuando Redis carga una instancia se utiliza el 100% de la CPU (carga los datos tan rápido como sea posible) y lee el vertedero.rdb archivo de forma secuencial. El I/O no es particularmente alta como la carga de la CPU-bound, no I/O bound.

¿Por qué en la tierra, un cuadro con dos CPUs y un montón de RAM, no intercambian cosas en el disco, debe, básicamente, dejar de trabajar con esta carga de trabajo?

He la impresión de que esto tiene mucho que ver con el hecho de que una instancia de EC2, tan relacionado a la tecnología de virtualización de usa, como puedo cargar todos los tiempos Redis 24 GB de conjuntos de datos en mi caja sin ningún problema (incluso con otras instancias de Redis ejecutando con alta carga).

Gracias por la sugerencia!

Salvatore

Edit: añadir algunos comentarios que he recibido de twitter:

desde @ezmobius: @antirez primera cosa a hacer es tratar de /mnt o el local efímero de las unidades para ver si su EBS apariencia escamosa, la 2ª es para asegurarse de que no es la "primera escritura de la pena" (en google) y si es así, usted necesita dd 0 en todo el disco.

desde @dvirsky: @antirez me estoy quedando en muchas instancias redis en exactamente ec2 nodos. He notado cierta desaceleración en bgsave pero no de este fenómeno.

14voto

Tobiask Puntos 3106

He tenido el mismo problema en una instancia de EC2. Probablemente no relacionadas con la Redis - se produce cuando existe un alto IO que pasa (por ejemplo. cuando redis es la carga de un archivo de volcado).

Echa un vistazo a este hilo en los foros de amazon: https://forums.aws.amazon.com/thread.jspa?messageID=215406

He experimentado con diferentes kernels/imágenes y ahora funciona muy bien (en un viejo kernel 2.6.21).

4voto

Kevin Smith Puntos 41

La salida de 'superior' podrían darnos algunas pistas. Hay un campo cerca de la parte superior izquierda de la etiqueta '% robados', que refleja la cantidad de hardware de la CPU desviado a otros huéspedes en el mismo equipo físico. He visto este tipo de ralentizaciones cuando el hipervisor decide asignar más recursos de la CPU a otro de los invitados, sobre todo cuando estoy realizando algunos de larga duración intensivo de la CPU de tareas.

No estoy seguro si ese es tu problema o no, pero es digno de la comprobación.

2voto

Shinnok Puntos 234

Usted debe verificar la CPU robar(xx.x%st en el lado derecho de la cpu de la línea) que top muestra cuando usted experimenta el 100% de la carga y el congelado de shell. Robar representa cuánto de real de sus ciclos de CPU son robados de su máquina por un hipervisor y dado a otro de la máquina. CPU robar sólo es relevante en los entornos virtualizados. Tuve exactamente el mismo problema con el micro instancias y que básicamente prestados mi ejemplo inutilizable por alrededor de 1 hora más o menos(hasta que mi tarea terminada ofc) si la CPU de tareas.

Usted puede encontrar más información sobre este tema mediante la lectura de este post sobre Greg Divagaciones. Aunque si se Greg palabra, esta debe estar sucediendo en el micro solo instancias.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: