¿En qué punto es el uso de EBS el cuello de botella?

10

Tengo un sitio alojado en Amazon usando una instancia EC2 respaldada por un volumen EBS. Los fines de semana, los picos de tráfico y yo agrandamos la instancia, lo que ayuda bastante: ya no veo que el uso de la CPU aumente al 100% y el servidor deja de responder.

Sin embargo, noto que las lecturas del disco también son muy altas (no se puede evitar, no lo creo) y me pregunto, ¿en qué punto veré algún tipo de falla porque el disco no puede mantener? ¿arriba?

Como puede ver en la captura de pantalla adjunta, alcanzó un máximo de 80 MB / minuto durante el fin de semana. ¿Alguien tiene experiencia con AWS y sabe en qué momento tendré que pasar a instancias de carga múltiple balanceada porque EBS se convierte en el cuello de botella?

Gráfico de uso de EBS

ESW
fuente
2
Creo que necesitamos algunos detalles de la capa de aplicación aquí. ¿Cuál es la actividad de lectura del disco? ¿Acceso aleatorio para imágenes / activos? ¿Grandes lecturas secuenciales (p. Ej., Copias de seguridad o análisis de bases de datos)? Tenga en cuenta que puede ejecutar múltiples volúmenes EBS conectados a una sola instancia haciendo el software RAID-0 para mejorar las cosas.
rmalayter
la mayoría de esas lecturas son archivos más pequeños (menos de 1 MB, muchos menos de 500k) pero no archivos "pequeños". No tengo idea si esto es una carga para un volumen EBS o si esta cantidad de tráfico es trival, y no tengo idea de cómo resolverlo.
ESW
Estaba escribiendo una respuesta con RAID y EBS cuando leí tu comentario, malayter. Añadiría que RAID10 podría ser una solución más flexible, ya que debería mejorar las lecturas Y escrituras.
tsykoduk
@tsykoduk En general, todos los tipos de almacenamiento de AWS tienen un rendimiento algo obvio y, aunque parezca que RAID10 podría mejorar el rendimiento, es realmente mejor probar la evaluación comparativa con el tipo de patrones de acceso y carga que es probable que experimente su aplicación real . Incluso entonces, es probable que su rendimiento varíe enormemente a veces en el entorno de AWS en comparación con una solución autohospedada en la que tiene más control y, por lo tanto, más previsibilidad, sobre el rendimiento del almacenamiento. En general, tener más de un volumen en una configuración RAID es probable que tenga un impacto positivo.
aculich

Respuestas:

5

Lo primero que debe tener en cuenta que tendrá el mayor impacto en su rendimiento de E / S es el tipo de instancia que está utilizando.

Instance Type   I/O Performance
-------------   ---------------
t1.micro        Low
m1.small        Moderate
m2.xlarge       Moderate
c1.medium       Moderate
m1.large        High
m1.xlarge       High
m2.2xlarge      High
m2.4xlarge      High
c1.xlarge       High
cc1.4xlarge     Very High (10 Gigabit Ethernet)
cc2.8xlarge     Very High (10 Gigabit Ethernet)
cg1.4xlarge     Very High (10 Gigabit Ethernet)

En cuanto a los volúmenes de EBS y el rendimiento que obtendrá, como lo sugieren las preguntas frecuentes de AWS , deberá comparar su aplicación para ver qué esperar:

P: ¿Qué tipo de latencia y tasas de rendimiento puedo esperar ver en los volúmenes de Amazon EBS? La latencia de una instancia de Amazon EC2 a un volumen de Amazon EBS es similar a la latencia que vería en la unidad de almacenamiento local de la instancia de Amazon EC2. Las velocidades de E / S pueden variar significativamente según el tamaño de las solicitudes, la aleatoriedad de los patrones de acceso y la estrategia de almacenamiento en caché utilizada por la aplicación. Como tal, la medida más precisa es comparar su aplicación específica en un volumen de Amazon EBS.

Lo que esto significa es que las tasas de EBS que obtiene no necesariamente son peores o mejores que el almacenamiento de instancias locales; realmente depende de su comportamiento de acceso a datos.

Hay más información en la página de AWS EBS :

Rendimiento de volumen de Amazon EBS

Los volúmenes de Amazon EBS están diseñados para ofrecer un mayor rendimiento que los almacenes de instancias de Amazon EC2 para aplicaciones que realizan muchos accesos aleatorios en su conjunto de datos. También puede adjuntar múltiples volúmenes a una instancia y dividirlos en bandas para lograr mayores aumentos en el rendimiento.

El rendimiento exacto dependerá de la aplicación (por ejemplo, E / S aleatoria versus secuencial o tamaños de solicitud grandes versus pequeños), por lo que la mejor medida es comparar sus aplicaciones reales con el volumen. Debido a que los volúmenes de Amazon EBS requieren acceso a la red, verá un rendimiento de rendimiento más rápido y más consistente con instancias más grandes.

También tenga en cuenta que el rendimiento de E / S no solo incluye el disco IO, sino también el tráfico de red ... por lo tanto, cuanto más tráfico de red obtenga su instancia, menos IO de disco obtendrá.

Dependiendo de lo que esté sirviendo, el almacenamiento en caché de objetos en la memoria puede ayudar considerablemente si eso es posible para su tipo de aplicación.

Además, aquí hay algunas publicaciones de blog que comparan el rendimiento de EBS y los volúmenes locales (efímeros) en varias configuraciones RAID y ajustes para obtener un buen rendimiento de E / S:

Discos efímeros EC2 frente a volúmenes EBS en RAID

Rendimiento de E / S de Amazon EC2: discos efímeros locales frente a volúmenes EBS rayados RAID 0

Getting Good IO del EBS de Amazon

aculich
fuente
2
Este sitio también parece tener buena información: ec2instances.info
Gianfranco P.