Recibí un informe de un usuario de Redis, y no estoy seguro de qué responder ya que no soy un experto en el área de Linux y su programador, sin embargo, nosotros (como el proyecto Redis) tenemos que resolver este tipo de problemas especialmente En el futuro, como con Redis Cluster, tendremos muchas instancias de Redis ejecutándose al mismo tiempo en un solo cuadro. Entonces estoy pidiendo ayuda aquí.
Problema:
- Kernel: "Linux redis1 2.6.32-305-ec2 # 9-Ubuntu SMP jue 15 abr 08:05:38 UTC 2010 x86_64 GNU / Linux"
- abundante RAM libre, ningún otro proceso realiza E / S significativas.
- Importante , ejecutarse en una gran instancia EC2, no en un servidor real. Nunca vi algo así en un entorno no virtualizado. La instancia de EC2 fue: "Instancia extragrande de memoria alta 17.1 GB de memoria, 6.5 ECU (2 núcleos virtuales con 3.25 unidades de cómputo EC2 cada uno), 420 GB de almacenamiento de instancia local, plataforma de 64 bits" .
Básicamente, una vez que reinicia una gran instancia de Redis, el sistema se volverá tan lento que ya no podrá escribir en el shell. Cuando Redis carga una instancia, usa el 100% de la CPU (carga los datos lo más rápido posible) y lee el archivo dump.rdb secuencialmente. La E / S no es particularmente alta ya que la carga está vinculada a la CPU, no a la E / S.
¿Por qué demonios una caja con dos CPU y mucha RAM, sin elementos intercambiados en el disco, básicamente debería dejar de funcionar con esta carga de trabajo?
Tengo la impresión de que esto tiene mucho que ver con el hecho de que es una instancia de EC2, por lo que está relacionada con la tecnología de virtualización utilizada, ya que cargo todas las veces conjuntos de datos Redis de 24 GB en mi caja sin ningún problema (incluso con otras instancias de Redis corriendo con alta carga).
Gracias por cualquier pista!
Salvatore
Editar : agregando algunos comentarios que recibí de Twitter:
de @ezmobius: @antirez lo primero que debe hacer es probarlo desde / mnt o las unidades efímeras locales para ver si tiene escasez de EBS, el segundo es asegurarse de que no sea la "primera penalización de escritura" (google) y si es así primero necesita dd 0 en el disco.
de @dvirsky: @antirez Estoy ejecutando muchas instancias de redis en exactamente tales nodos ec2. He notado cierta desaceleración en bgsave pero no este fenómeno.