AWS, ancho de banda y entrega de contenido

31

Mi pregunta es sobre las máquinas virtuales y la entrega de su contenido a través de la conexión de servidores a Internet.

Tengo una instancia de Windows Ec2, y su conexión de red parece ser de 100mbps

Si tuviera que entregar contenido de esa instancia EC2, ¿ES ESO mi potencial cuello de botella?

¿En qué difiere s3? Supongo que no existe un posible cuello de botella de salida potencial con s3.

Nota: Sé que s3 y su CDN serían mejores para contenido estático, sin embargo, necesito explorar esta situación por ahora. Nuestras páginas HTML necesitan acceder a una página lateral del servidor a través de AJAX, y debido a que no hay una solución a prueba de bombas para esto en este momento, nuestro contenido y nuestro servidor deben estar exactamente en el mismo dominio, por lo que descarta usar S3.

Ancho de banda necesario: no estoy seguro, podríamos tener hasta 100 usuarios descargando videos en cualquier momento, probablemente no más. Los videos pueden tener hasta 5 MB cada uno, pero verían hasta 20.

Keeno
fuente
"necesitamos nuestro HTML para acceder a un proxy a través de JS" ... ¿Qué significa eso?
Eric Hammond el
¿Cuánto ancho de banda espera usar en el pico?
Eric Hammond
@EricHammond He actualizado mi pregunta con más información
Keeno
No me parece que tenga alguna razón en particular para estar hiper concentrado en cualquier posible cuello de botella específico en este momento. Cree su servicio utilizando las mejores prácticas comunes para la escalabilidad y luego investigue y resuelva los problemas de rendimiento a medida que surjan. Servir videos a través de un CDN.
Eric Hammond
1
Keeno: Estoy familiarizado con la misma política de origen en JS, pero aún no entiendo por qué le impediría servir el contenido de video con un dominio diferente (CDN). Esta es una práctica común.
Eric Hammond

Respuestas:

60

No puedo hablar por instancias de Windows, pero supongo que sus características básicas son bastante similares a las instancias de Linux.

Su estimación para el uso de ancho de banda es de 100 descargas de video simultáneas (no estoy seguro de si quiere descargar el archivo o transmitir el video; supondré lo último). Si tomamos una velocidad de transmisión de 512 kbps, necesita aproximadamente 51 Mbits / so 6.5 MB / s.

Las instancias de EC2 difieren en su rendimiento de E / S (que incluye el ancho de banda). Hay 3 niveles de rendimiento de E / S: bajo, moderado y alto. Sin embargo, tenga en cuenta que la E / S de disco (es decir, de volúmenes EBS) también depende del ancho de banda. Realmente solo puede considerar el ancho de banda dentro de la red EC2 (ya que será completamente variable a través de Internet).

Algunos números típicos para cuantificar 'bajo', 'medio' y 'alto' (diferentes fuentes citan diferentes números para valores teóricos, por lo que podrían no ser completamente precisos).

Alto: teórico: 1 Gbps = 125 MB / s; Realista ( fuente ): 750Mbps = 95MB / s

Moderado: teórico: 250 Mbps; Realista ( fuente, p57 ): 80Mbps = 10MB / s

Bajo: teórico: 100 Mbps; Realista (de mis propias pruebas): 10-15Mbps = 1-2MB / s

(En realidad, también hay un nivel 'muy alto' (10 Gbps teórico), pero eso se aplica solo a las instancias de cómputo de clúster).

Otro punto de mención es el grado de variación. En instancias más pequeñas, hay más variabilidad en el rendimiento ya que los componentes físicos se comparten entre más máquinas virtuales. En cualquier caso, puede esperar una variación de alrededor de +/- 20% en su rendimiento (fuentes: 1 , 2 , 3 ). En su caso (según los supuestos / cálculos en la parte superior), es posible que necesite un ancho de banda máximo de 13 MB / s (doble 6.5 MBps, ya que la E / S de disco también está limitada a la red). Si está transfiriendo contenido de ancho de banda más bajo, debería poder usar una instancia con un rendimiento de E / S 'moderado' (consulte la página de tipos de instancia), si sus cálculos dan como resultado un mayor requisito de ancho de banda, necesitará una instancia con un rendimiento de E / S 'alto'. Simplemente transmitir los datos no debe estar vinculado a la CPU o la memoria, pero mantener 100 conexiones simultáneas probablemente requerirá al menos una instancia de tamaño mediano, y si el ancho de banda es una preocupación, según lo anterior, una instancia grande sería una apuesta más segura).

Recomendaría comparar los servidores que ejecuta para ver si satisfacen sus necesidades (calculadas). Inicie dos instancias (del mismo tipo) y ejecútelas iperfen cada una utilizando las direcciones IP privadas de las instancias; deberá abrir el puerto 5001 en su grupo de seguridad si lo ejecuta con la configuración predeterminada). Además, la mayoría de las pruebas fuera de la red EC2 muestran resultados de entre 80 y 130 Mbps (grandes instancias), aunque estos números no son necesariamente significativos.

Un CDN se adaptaría mejor a sus necesidades, si su configuración lo permite. S3 parece tener un límite de alrededor de 50 MB / s para el ancho de banda (al menos desde una sola instancia) según este artículo , pero eso es más alto de lo que debería requerir (S3 no admite la transmisión). Cloudfront sería más adecuado para su tarea (ya que está diseñado como un CDN) y admite 1000Mbps = 125MB / s de forma predeterminada ( fuente ) con mayor ancho de banda disponible a pedido y también puede transmitir contenido)

cyberx86
fuente
¿De dónde sacas tus valores "teóricos" de Mbps? No puedo encontrar ninguna fuente de documentación oficial o no oficial para estos números.
dtheodor
44
Es probable que estos números sean bastante diferentes ahora (y parece que no puedo rastrear las fuentes para ellos en este momento). Mucho ha cambiado en 4 años. Se sabe que EC2 tiene interconexiones de 10 Gbps dentro de grupos de clúster. AWS solía (en 2007) citar una cifra de ancho de banda local dedicado de 250 Mbps. Actualmente, el ancho de banda de la red se comparte entre instancias, con prioridad asignada según el tipo de instancia (y posiblemente factores como la optimización de EBS). Al menos en parte, el tamaño de la instancia determina con cuántas otras instancias comparte recursos. Si la red no se utiliza, su instancia obtiene una participación mayor.
cyberx86
Lo sentimos, esto está fuera de tema, pero no sé cómo contactar a @ cyberx86, pero solo para hacerle saber que el certificado SSL de su sitio web expiró hace poco más de una semana. Disculpas por comentar aquí, pero no puedo encontrar una dirección de correo electrónico para ti.
Kevin Lyda
1
@KevinLyda Gracias. Si bien sabía que el certificado había expirado, ese sitio no se ha actualizado durante algún tiempo, por lo que esta fue una buena oportunidad para migrar a renovaciones automáticas con LetsEncrypt.
cyberx86
Sí, lo he estado usando yo mismo. Muy fácil de escribir (especialmente con los clientes no oficiales) y trabajar en segundo plano.
Kevin Lyda
0

Los números parecen cambiar con el tiempo y a medida que proliferan los diferentes tipos de instancias. Pero varias personas publican puntos de referencia. He tenido un poco de suerte buscando en Google [instance category] ec2 network benchmark.

Por ejemplo, quería saber el ancho de banda de una m4.xlargeinstancia, así que busqué ec2 m4 network benchmark. Encontré este resultado de prueba del blog de ingeniería del Washington Post:

Type       Cost    Bandwidth Bandwidth Cost (1Gb/s) Bandwidth Cost EBS optimized
...
m4.xlarge  $0.252  791Mb/s   $0.320                 $0.320
...
Simon Woodside
fuente