Comment résoudre les problèmes d'augmentation de la latence et réduire cette dernière dans CloudFront ?

Date de la dernière mise à jour : 02/06/2022

Je constate une augmentation de la latence dans les réponses d'Amazon CloudFront. Comment puis-je en identifier la cause et réduire la latence ? 

Brève description

Pour résoudre les problèmes de latence dans CloudFront, commencez par déterminer lequel des événements suivants contribue à la latence :

  • Le temps nécessaire pour que les demandes passent entre le client et les emplacements périphériques CloudFront. Cela inclut le processus de recherche de système de nom de domaine (DNS) et les négociations TCP et SSL/TLS.
  • Le temps nécessaire pour que les demandes passent entre CloudFront et l'emplacement d'origine. Cela inclut le processus de recherche DNS d'origine, les négociations TCP et SSL/TLS avec l'emplacement d'origine, et le temps nécessaire à l'emplacement d'origine pour traiter et répondre à un objet.

Suivez ensuite les étapes de dépannage pour les événements qui génèrent le plus de latence.

Solution

Identifiez les événements entraînant de la latence dans CloudFront :

Pour identifier les événements à l'origine de la latence dans CloudFront, effectuez l'une des opérations suivantes :

  • Exécutez la commande cURL suivante :
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

Remarque : remplacez example.com par votre nom de domaine CloudFront ou nom de domaine alternatif (CNAME) et votre chemin d'URL.

  • Vérifiez la durée de chaque étape d'une demande réseau dans les outils de développement de votre navigateur Web. Par exemple, si vous utilisez Mozilla Firefox, l'onglet Délai fournit ces informations.
  • En fonction du time-taken (temps passé) pour chaque événement ou demande, consultez la section Solution de cet article.

    Si vous avez observé une latence par le passé, vérifiez les champs time-taken et time-to-first-byte dans les journaux d'accès CloudFront. Les journaux d'accès CloudFront ne journalisent pas le temps passé par le client sur le processus de recherche DNS et les négociations TCP et SSL/TLS.

    Réduction de la latence dans la résolution DNS

    • Augmentez le temps de mise en cache DNS dans le DNS côté client.
    • Augmentez la durée de vie (TTL) du cache sur le serveur DNS local.
    • Augmentez la TTL du registre DNS dans votre serveur d'inscriptions/fournisseur DNS.
    • Si le serveur DNS du résolveur de votre fournisseur de services Internet est à l'origine de la latence, pensez à utiliser des serveurs DNS publics.

    Réduction de la latence dans les durées de négociation TCP et SSL/TLS

    • Vérifiez la bande passante de votre réseau local et la bande passante Internet.
    • Vérifiez s'il y a une quelconque interruption du réseau chez votre fournisseur de serveur Internet ou votre routeur.
    • Optimisez les performances de votre réseau local via votre fournisseur de services Internet ou vos itinéraires réseau.
    • Vérifiez que vous utilisez le bon résolveur DNS qui autorise votre navigateur Web à trouver l'emplacement du point de présence le plus proche et le mieux adapté.
    • Pour améliorer les performances des sites HTTPS, limitez la longueur de votre chaîne de certification.
    • La latence peut être provoquée par un pare-feu, un proxy ou un routeur local. Pour déterminer lequel de ces éléments est à l'origine de la latence, exécutez la commande MTR suivante à partir de votre système. Consultez la page Diagnosing Network Issues with MTR pour plus d'informations.
    mtr -rw example.com --no-dns
    Remarque : remplacez example.com par votre nom de domaine.

    Réduction de la latence dans TTFB (temps de chargement du premier octet) et le TTL (temps total pris

    Si CloudFront renvoie « X-Cache:Hit from cloudfront »

    CloudFront renvoie « X-Cache:Hit from cloudfront » lorsque les demandes sont fournies depuis l'emplacement périphérique le plus proche. Pour réduire la latence :

    Si CloudFront renvoie « X-Cache:Miss from cloudfront »

    Si CloudFront renvoie « X-Cache:Miss from cloudfront » lorsque la demande est envoyée vers l'origine. Pour réduire la latence :

    • Réduisez le temps aller-retour (RTT) entre l'emplacement périphérique CloudFront et votre emplacement d'origine. Si une demande provenant d'un emplacement périphérique CloudFront est acheminée vers l'emplacement d'origine le plus proche, le RTT est inférieur. Cependant, le TTFB est affecté si la demande provient d'un emplacement périphérique géographiquement éloigné de l'origine. Pour optimiser le RTT, répliquez le serveur d'origine dans plusieurs régions géographiquement plus proches de vos utilisateurs. Ensuite, configurez le DNS de votre nom de domaine d'origine afin qu'il achemine la demande vers les serveurs d'origine en fonction de la latence ou de la géolocalisation. Si vous utilisez Amazon Route 53 comme fournisseur DNS, consultez Sélection d'une stratégie de routage pour plus d'informations.
    • Activez la compression automatique CloudFront pour compresser les fichiers et réduire la vitesse de téléchargement. Si votre format de fichier n'est pas pris en charge par la compression automatique CloudFront, pré-compressez ce fichier dans votre origine et envoyez-le avec l'en-tête Content-Encoding.
    • Vérifiez la latence entre l'origine et CloudFront en activant la métrique de latence d'origine. Remarque : les tarifs CloudWatch standard s'appliquent.
    • Activez CloudFront Origin Shield.
    • Ajoutez des politiques d'en-têtes de réponse lorsque la fonction d'en-tête Server-Timing est activée. Cette fonction peut vous aider à comprendre les événements qui contribuent à la latence entre CloudFront et l'origine.