¿Cómo soluciono los problemas y reduzco el aumento de latencia de CloudFront?

Última actualización: 02-06-2022

He observado un aumento de la latencia en las respuestas de Amazon CloudFront. ¿Cómo puedo identificar la causa y reducir la latencia?

Descripción corta

Para solucionar problemas de latencia de CloudFront, primero identifique cuáles de los siguientes eventos contribuyen a la latencia:

  • El tiempo que tardan las solicitudes en ir entre el cliente y las ubicaciones periféricas de CloudFront. Esto incluye el proceso de búsqueda del sistema de nombres de dominio (DNS) y las negociaciones TCP y SSL/TLS.
  • El tiempo que tardan las solicitudes en ir entre CloudFront y el origen. Esto incluye el proceso de búsqueda de DNS de origen, las negociaciones TCP y SSL/TLS con el origen y el tiempo que tarda el origen en procesar y responder con un objeto.

A continuación, siga los pasos de solución de problemas para los eventos que causan la mayor latencia.

Resolución

Identifique los eventos que causan latencia en CloudFront:

Para identificar qué eventos causan latencia en CloudFront, realice una de las siguientes acciones:

  • Ejecute el siguiente comando cURL:
curl -w "DNS_resolution: %{time_namelookup}| TCP_negotiation_time: %{time_connect}| SSL_negotiation_time: %{time_appconnect}| TTFB: %{time_starttransfer}| Total time: %{time_total} \n" -o /dev/null -vsL https://www.example.com

Nota: Reemplace example.com por el nombre de dominio de CloudFront o el nombre de dominio alternativo (CNAME) y la ruta de URL.

  • Compruebe cuánto tarda cada etapa de una solicitud de red en las herramientas para desarrolladores de su navegador web. Por ejemplo, si usa Mozilla Firefox, la pestaña Timing (Tiempo) proporciona esta información.
  • En función del valor de time-taken (tiempo requerido) para cada evento o solicitud, consulte la sección Resolución correspondiente de este artículo.

    Si ha observado latencia en el pasado, compruebe los campos time-taken (tiempo requerido) y time-to-first-byte (tiempo hasta el primer byte) en los registros de acceso de CloudFront. Los registros de acceso de CloudFront no registran el tiempo que tarda el cliente en el proceso de búsqueda de DNS ni en las negociaciones de TCP y SSL/TLS

    Reducir la latencia en la resolución de DNS

    • Aumente el tiempo de almacenamiento en caché de DNS en el DNS del lado del cliente.
    • Aumente el tiempo de vida (TTL) de la caché en el servidor DNS local.
    • Aumente el TTL en el registro DNS de su registrador/proveedor de DNS.
    • Si el servidor DNS de resolución de su proveedor de servicios de Internet está causando latencia, considere usar servidores DNS públicos.

    Reducción de la latencia en TCP y SSL/TLS: tiempo de negociación

    • Compruebe el ancho de banda de la red local y el ancho de banda de Internet.
    • Compruebe si hay alguna interrupción de la red en su proveedor de servidor de Internet o en el enrutador.
    • Optimice el rendimiento de su red local mediante el proveedor de servicios de Internet o las rutas de red.
    • Confirme que está utilizando el solucionador de DNS correcto que permita a su navegador web encontrar la ubicación POP más cercana y correcta.
    • Para mejorar el rendimiento del sitio HTTPS, mantenga su cadena de certificación corta.
    • La latencia puede deberse a un firewall, un proxy o un enrutador local. Para determinar cuál de estos factores es la causa de la latencia, ejecute el siguiente comando MTR desde el sistema. Consulte Diagnóstico de problemas de red con MTR para obtener más información.
    mtr -rw example.com --no-dns
    Nota: Reemplace example.com por el nombre de dominio.

    Reducción de la latencia en el tiempo hasta el primer byte (TTFB) y el tiempo total empleado (TTL)

    Si CloudFront devuelve “X-Cache: Hit from CloudFront” (X-Cache: acierto desde CloudFront)

    CloudFront devuelve la respuesta “X-Cache: Hit from CloudFront” (X-Cache: acierto desde CloudFront) cuando las solicitudes se atienden desde la ubicación periférica más cercana. Para reducir la latencia:

    Si CloudFront devuelve “X-Cache: Miss from CloudFront” (X-Cache: Ausencia desde CloudFront)

    Si CloudFront devuelve “X-Cache: Miss from CloudFront” (X-Cache: Ausencia desde CloudFront) cuando la solicitud se envía al origen. Para reducir la latencia:

    • Reduzca el tiempo de ida y vuelta (RTT) entre la ubicación periférica de CloudFront y la ubicación de origen. Si una solicitud de una ubicación periférica de CloudFront se dirige a la ubicación de origen más cercana, el RTT es menor. Sin embargo, el TTFB se ve afectado si la solicitud proviene de una ubicación periférica geográficamente distante del origen. Para optimizar el RTT, replique el servidor de origen en varias regiones que estén geográficamente más cerca de los usuarios. Luego, configure el DNS del nombre de dominio de origen para que dirija la solicitud a los servidores de origen en función de la latencia o la geolocalización. Si utiliza Amazon Route 53 como proveedor de DNS, consulte Elegir una política de enrutamiento para obtener más información.
    • Active la compresión automática de CloudFront para comprimir archivos y reducir la velocidad de descarga. Si el formato de archivo no es compatible con la compresión automática de CloudFront, comprímalo previamente en el origen y entréguelo con el encabezado Content-Encoding.
    • Compruebe la latencia desde el origen hasta CloudFront al habilitar la métrica de latencia de origen. Nota: Se aplican las tarifas estándar de CloudWatch.
    • Active CloudFront Origin Shield.
    • Agregue políticas de encabezados de respuesta con la función Server-Timing header (Encabezado de servidor-tiempo) activada. Esta función puede ayudarlo a comprender los eventos que contribuyen a la latencia entre CloudFront y el origen.