¿Debería AWS CloudFront * aumentar * el tiempo de carga de los archivos a los que se accede con poca frecuencia?

9

Soy nuevo en CDN y estoy experimentando con CloudFront. He configurado todo y todo parece estar funcionando bien. Puedo crear una imagen estática en una página y acceder a ella a través de mi distribución CloudFront. Estoy usando un origen personalizado (es decir, no un cubo s3).

Sin embargo, me preocupa que pueda estar peor desde el punto de vista del rendimiento. Tengo una página de prueba que está cargando las mismas 20 imágenes con y sin CDN. Mirando el panel de red en Firebug, la primera vez que cargo esta página, las imágenes que se cargan directamente desde el servidor de origen son mucho más rápidas. En la página siguiente se cargan los beneficios de la CDN: después de 3-5 actualizaciones, la CDN funciona mejor que el servidor de origen.

Así que puedo ver que en una página popular en nuestro sitio que está siendo golpeada todo el tiempo, esto será un beneficio. Y debería esperar un beneficio porque estoy en Seattle (a la vuelta de la esquina de Amazon) y mi servidor está en CA.

Lo que pasa es que si salgo de la página durante unos minutos y luego vuelvo a cargar, las cosas vuelven al punto de partida, con CloudFront peor que el servidor de origen. ¿Se espera esto? ¿Las cosas se caen del "caché" de CDN tan rápido?

¿Es posible que algo en mi configuración esté perjudicando el rendimiento? ¿O es la realidad de que el CDN solo será positivo para el contenido al que se accede actualmente cada pocos segundos en promedio?

(Publicación cruzada del foro de AWS porque los tiempos de respuesta de SO me han echado a perder para siempre)

ACTUALIZAR:

Hay dos buenas respuestas a continuación que vale la pena ver si tiene preguntas sobre el rendimiento de CloudFront. Sin embargo, recientemente encontré una explicación para mi problema específico que no se mencionó. Había dejado TTL a los 5 minutos como un descuido. Como también estoy usando un origen personalizado, hay un viaje de ida y vuelta adicional al servidor de nombres autorizado para resolverlo en el dominio real de Amazon CloudFront. Ahora que la configuración TTL ha vuelto a 12 horas, parece que las cargas largas ocurren con menos frecuencia.

Greg
fuente
Sí, es posible que CloudFront sea más lento que simplemente ir directamente a un servidor rápido, porque CloudFront es uno de los CDN más lentos que existen, debido a la forma en que Amazon lo implementó con múltiples capas de resolución DNS, etc. Ejecute algunos puntos de referencia desde differentnet ubicaciones en todo el mundo y decida si le conviene o no: use webpagetest.org para realizar las pruebas.
Jesper M

Respuestas:

5

Cloudfront establece un encabezado en las respuestas como "X-Cache: Hit from cloudfront" en las respuestas. Presumiblemente, dirá "Miss" si su archivo no estaba en el caché del nodo al que fue dirigido.

Es posible que sus archivos simplemente no sean lo suficientemente populares, por lo que se expulsan de la caché de CloudFront por contenido más popular a pesar de que no han transcurrido 24 horas. También es posible que la sobrecarga de E / S o alguna otra circunstancia dentro de un nodo CloudFront en particular haga que el acceso sea lento. Cloudfront es muy económico en comparación con Akamai o LimeLight. El peor rendimiento y los niveles de servicio garantizados son dos de los motivos para utilizar los reproductores más caros.

Haría una prueba, colocando solo un archivo popular en Cloudfront en producción, y luego usaría pruebas periódicas para ver si CloudFront está indicando aciertos (también registra el tiempo total de transacción).

rmalayter
fuente
He actualizado la pregunta con otra explicación potencial para el problema de rendimiento que vi, que es que había dejado la configuración TTL en la configuración baja de 5 minutos, pero al volver a 12 horas no creo que esté viendo estos problemas de rendimiento ocasionales tan a menudo.
Greg
7

Es posible. Sin embargo, un propósito de un CDN es la escalabilidad. Puede esperar que el CDN realice lo mismo si realiza 100 visitas a la vez o 1 millón de visitas a la vez.

En cuanto a su configuración, no hay nada que pueda saber con la información que proporcionó, pero creo que el punto anterior es lo que hace que un CDN sea tan valioso. Si está creando un sitio que no recibe mucho tráfico, podría estar mejor sin la CDN. Sin embargo, el CDN proporcionará una carga más ligera en su servidor web si obtiene mucho tráfico porque está pasando la publicación de sus medios a otro servidor. Un último punto, un buen CDN (y Amazon es) usará su extensa red para servir su contenido desde la ubicación más cercana al solicitante. En muchos casos, pueden servir el contenido del ISP del solicitante, lo que significa tiempos de carga MUY rápidos.

Espero que ayude.

Jesse Bunch
fuente
Gracias Jesse, muy útil. El punto con respecto al escalado está bien tomado. Y tenemos suficiente tráfico para que marque una gran diferencia. Sin embargo, aún me encantaría conocer la política de almacenamiento en caché. He encontrado una enorme cantidad de información sobre CÓMO configurar el CDN y muy poca información sobre sus características. Me pregunto, por ejemplo, si debería excluir (del CDN) el contenido antiguo al que se accede con poca frecuencia.
Greg
Greg - No veo un argumento para excluir el contenido, excepto por razones financieras. Sin embargo, puede controlar los encabezados de caché de su objeto en Amazon. Puede intentar investigar esto: stackoverflow.com/questions/269840/…
Jesse Bunch
Eso le permitiría especificar encabezados de vencimientos en el futuro lejano como lo haría con cualquier medio de un sitio web normal.
Jesse Bunch
Gracias de nuevo. Ese enlace de control de caché no es relevante para mi situación porque estoy usando un servidor de origen personalizado, no s3. Pero el principal se aplica y tengo encabezados de vencimientos futuros futuros establecidos. Por cierto, los documentos de Amazon dicen que el contenido vive en el caché durante 24 horas, pero mis experimentos indican algo diferente.
Greg
1

¿He entendido mal? ¿El control de caché no administra cuánto tiempo viven las cosas en las ubicaciones de borde antes de que las ubicaciones de borde las vuelvan a cargar desde S3? Entonces, ¿son relevantes para su situación si usa S3 o su propio origen? ¿No?

Las preguntas frecuentes de Amazon dicen: "P. ¿Cuánto tiempo mantendrá Amazon CloudFront mis archivos en las ubicaciones de borde? De manera predeterminada, si no se establece un encabezado de control de caché, cada ubicación de borde verifica una versión actualizada de su archivo cada vez que recibe una solicitud más de 24 horas después de la hora anterior, verificó el origen de los cambios en ese archivo. Esto se denomina "período de vencimiento". Puede establecer este período de caducidad tan corto como 1 hora, o el tiempo que desee, configurando los encabezados de control de caché en sus archivos en su origen. Amazon CloudFront usa estos encabezados de control de caché para determinar con qué frecuencia necesita verificar origen para una versión actualizada de ese archivo. Si sus archivos no cambian muy a menudo, es una buena práctica establecer un período de vencimiento largo e implementar un sistema de control de versiones para administrar las actualizaciones de sus archivos ".

[Supongo que la última oración significa "mala suerte si la configuras en 50 años y luego quieres cambiar el archivo".]

¿No es el punto principal de usar un CDN que aloja contenido estático? Si es así, ¿sería útil usar TTL considerablemente más largo que un día? Para prácticamente todo (todas las imágenes y CSS), uso Cache-Control = "max-age = 604800, public, must-revalidate" (es decir, 1 semana). En mi experiencia, los archivos definitivamente tardan hasta una semana en cambiar si subo nuevas versiones a S3.

Espero que esto ayude. [Por cierto: en su punto más general, también me pregunto si un CDN ayuda al rendimiento tanto como cree que lo hará. Estoy a punto de trasladar todo mi sitio (CDN incluido) a un servidor dedicado súper rápido y hacer algunas pruebas para averiguarlo.]

Chris W
fuente
Tiene razón en que el control de caché influye en el tiempo que el contenido se mantiene en el borde. Sin embargo, el TTL es un asunto separado. TTL controla el almacenamiento en caché de la dirección IP asignada al nombre de dominio. Entonces, independientemente de si el archivo estático se almacena en caché en el borde o no, la primera vez que un servidor ve la URL del archivo, tiene que encontrar la dirección IP de este dominio. Con TTL de 1 día, es probable que un servidor cercano tenga esta información en su caché DNS. Con un TTL 5 minutos esto es mucho menos probable y se requiere una ida y vuelta completa a mi servidor de origen (no para el archivo, pero para resolver la URL) ..
Greg
Ah ok gracias. Estaba confundiendo DNS TTL y control de caché :)
Chris W
1

Las razones para usar CDN son si está esperando

  • Contenido estático: actualizaciones poco frecuentes o controladas
  • Visto en todo el mundo
  • Accedido frecuentemente

Se accede a nuestro sitio web con poca frecuencia como su caso, pero tenemos una configuración de servicio de monitoreo que solicita nuestro sitio web en todo el mundo. Por lo tanto, mantiene calientes los cachés de CDN. También me gustaría compartir nuestro caso, que es simple y demuestra la capacidad de CDN.

Además, esperamos un cargo mensual de 2.2 $ en lugar de 7 $ para el servidor GoDaddy (que no puede manejar las sobretensiones)

Promedio de tiempos de carga de página

Promedio de distribución de tiempo de carga de página

JehandadK
fuente