28 novembre 2022

NGINX Tuning et Time To First Byte : une étude de cas réelle sur TTFB

Une étude de cas réelle sur les avantages du TTFB après le réglage du serveur Web NGINX

Le sujet de cet article est né à la perfection, après plusieurs semaines de "manque d'inspiration" sur des sujets liés à la performance web. Soit parce que le Black Friday a absorbé les énergies pour la mise à l'échelle du e-commerce client, soit parce que nous mettons beaucoup de viande sur le feu avec le développement de plugins pour Prestashop et Magento, ainsi que notre solution CDN dédiée pour les images adaptatives, mais surtout parce que nous avons beaucoup parlé des technologies à l'œuvre et utilisées dans notre pile logicielle spécifique pour WordPress.

Quiconque a lu et suivi les articles et posts publiés au fil du temps a certainement remarqué à quel point il y a des récurrences régulières sur les articles techniques lorsqu'il s'agit d'hébergement WordPress ou d'hébergement Linux d'une manière plus générale.

On finit toujours par parler de NGINX et de Varnish comme du combo ultime en matière de performances et de vitesse, oubliant souvent l'importance d'un réglage minutieux pour obtenir des valeurs adéquates telles que le meilleur TTFB possible.

Nous avons parlé longtemps l'importance d'un TTFB aussi faible que possible, et à quel point il est important d'obtenir une faible latence ; cependant, nous n'avons jamais été en mesure de documenter avec une analyse différentielle deux sites identiques avec la même pile et une optimisation supplémentaire de la pile logicielle et un réglage spécifique pour le serveur Web NGINX.

Le cas particulier né par hasard.

Hier soir, nous avons publié un message sur le mur Facebook privé où le TTFB a été mesuré à l'aide de l'utilitaire SpeedVitals.com, un service en ligne qui vous permet de mesurer le TTFB à partir de plusieurs emplacements dans le monde.

SpeedVitals.com

De ce qui était au départ un post "stérile", écrit un dimanche maussade et sans trop d'objectifs, autres que d'extérioriser un petit Vanity Metrics et de nous "rendre beaux", plusieurs commentaires en sont ressortis jusque tard dans la soirée au cours desquels ils étaient nombreux ont répondu en publiant leurs notes et les évaluations que cet outil en ligne a renvoyées.

Message Facebook Marco Marcoaldi SpeedVitals

Parmi les 26 commentaires que vous pouvez voir en bas à droite de l'image ci-dessus, nous avons été particulièrement frappés par le commentaire d'un de nos clients qui a montré un TTFB particulièrement élevé par rapport à celui affiché dans l'écran ci-dessus.

En particulier, il a été souligné que l'évaluation renvoyée était de grade B et que le temps de balayage des araignées de Google n'était pas exactement très faible, atteignant 141 ms.

Considérant que la pile logicielle sous-jacente était pratiquement la même, il fallait certainement aller revoir quelles étaient les problématiques spécifiques des configurations des services Varnish et NGINX pour essayer de tout améliorer et optimiser au mieux.

Analyse des métriques du site en question.

Par chance, le problème soulevé était sous notre contrôle total et donc, même si dimanche, nous voulions entrer dans un "travail de dossier" conscient que cela aurait été une occasion tentante et irremplaçable de montrer et de démontrer comment un réglage super fin aurait pu apporter des bénéfices tangibles et finir par tout documenter avec ce post qui n'est rien de plus qu'une analyse différentielle entre la situation pré et post réglage.

Nous avons donc décidé d'utiliser un utilitaire appelé ByteCheck (bytecheck.com) qui nous permet de mesurer le temps jusqu'au premier octet et décomposer le temps total en différentes étapes qui composent le TTFB total.

Vérification d'octet

À partir de la résolution DNS, au temps de connexion, au temps d'établissement de la connexion cryptée, jusqu'aux temps d'attente et de livraison du contenu, comme on peut le voir dans l'image suivante, dans laquelle il est évident de manière assez évidente et façon incontestable qu'il y a un temps d'attente particulièrement élevé de 240ms.

Objectivement, on se demande ce que fait le serveur Web (ou l'ensemble de la pile) pendant ces 240 ms, un temps trop faible pour supposer que le cache statique Varnish ne fonctionne pas correctement, et en même temps, une valeur trop élevée pour supposer que la pile logicielle est fonctionner normalement du mieux possible.

Nous avons donc voulu tester que le cache statique fonctionnait correctement, en utilisant l'utilitaire Linux CURL, et en examinant la réponse des en-têtes HTTP.

[root@lawebstar ~]# curl -I https://www.ilmiocaneleggenda.it HTTP/1.1 200 OK Serveur : nginx Date : lundi 28 novembre 2022 00:26:46 GMT Type de contenu : text/html ; charset=UTF-8 Connexion : keep-alive Vary : Accept-Encoding Vary : Accept-Encoding Strict-Transport-Security : max-age=86400 ; includeSubDomains X-Content-Type-Options : nosniff X-Frame-Options : DENY X-XSS-Protection : 1 ; mode=bloc Liens : ; rel=précharge ; as=script Liens : ; rel=précharge ; as=script Liens : ; rel=précharge ; as=script Liens : ; rel=précharge ; as=script Liens : ; rel=précharge ; as=script Liens : ; rel="https://api.w.org/" Referrer-Policy : no-referrer-when-downgrade X-Cacheable : OUI X-Varnish : 2.2.0 12 Âge : 2 Via : 32853419 vernis X-Cache : HIT

La réponse en question ne laissait aucun doute sur le fait que le Varnish Static Cache fonctionnait correctement, ayant mis en cache la réponse pendant 4656 secondes et que le cache statique renvoyait un HIT et non un MISS et donc a trouvé (et livré) la réponse déjà stockée dans le cache.

Le problème devait donc se situer en amont, selon la logique "sandwich" dans laquelle NGINX est à la fois le serveur web sur lequel tourne le site web, et le terminateur proxy inverse de la connexion HTTPS, étant donné que Varnish ne supporte pas HTTPS et a besoin de un terminateur HTTPS selon le schéma suivant.

Nous avons donc complètement révisé la configuration de NGINX à la fois globalement et pour les hôtes virtuels individuels, et en ajustant méticuleusement des paramètres tels que les tampons, ainsi qu'en activant certaines fonctionnalités bien documentées dans les dernières versions de NGINX à partir de la 1.22, nous avons obtenu un résultat résolument optimal. évaluer. portant le temps d'attente de 247ms à 124ms, ou en réduisant de moitié le TTFB final.

mydoglegend TTFB Amélioré

Évidemment, en tant qu'hébergeur, nous nous excusons à l'avance si nous ne montrons pas les fichiers de configuration spécifiques et ne documentons pas les modifications apportées en détail, étant en fait un savoir-faire que nous avons tendance à ne pas divulguer pour des raisons commerciales évidentes.

L'importance d'un faible TTFB et les avantages que vous retirerez de ce réglage.

Nous avons déjà parlé de l'importance du TTFB comme nous l'avons initialement mentionné dans cet article : Qu'est-ce que le TTFB ? Comment améliorer le Time To First Byte, cependant il est bon de souligner comment Google avec ses paramètres Vitaux Web de base, a décrété qu'un TTFB inférieur à 200 ms peut être considéré comme bon, et un TTFB supérieur qui doit être amélioré.

Quelqu'un pourrait objecter ou se demander quels sont les réels avantages d'un TTFB conforme aux attentes de Google, et s'il est vraiment si important d'avoir un TTFB inférieur à 200ms.

Ce qui est certain, et auquel il faudra faire très attention, c'est que la fréquence de scan des spiders de Google et du TTFB sont directement liés.

google-search-console-crawl-stats-response-time

Vous pouvez le voir à partir d'un historique comme ci-dessus de la Search Console.

Vous pouvez comprendre à partir des deux lignes bleues et oranges, qu'à mesure que le temps de réponse augmente, (ligne orange TTFB), les requêtes de crawl de Google diminuent (ligne bleue).

À l'inverse, à mesure que le temps de réponse TTFB diminue, les demandes d'exploration de Google augmentent.

Si vous cherchez à connaître les statistiques de crawl de Google, dans la Search Console, allez dans "Paramètres" en bas de la colonne de gauche. Dans la section Analyse, vous trouverez le bouton "Ouvrir le rapport" pour les statistiques d'analyse. Lorsque le rapport est ouvert, vous pouvez cocher la case « Temps de réponse moyen (ms) » pour ajouter la métrique au graphique.

Google utilise 200 ms comme valeur limite dans d'autres tests et rapports, avant d'afficher un avertissement indiquant que le temps de réponse est élevé. Le temps de réponse varie en fonction de votre hébergement, de la qualité du site et de la configuration générale de cache, CDN, ed dans ce cas, le réglage du serveur Web.

Conclusions et observations

A partir de ce cas réel et bien documenté, on peut observer comment l'utilisation des bons outils peut ne pas être suffisante pour obtenir les meilleurs résultats, qui peuvent au contraire être obtenus en utilisant les bons outils, mais aussi et surtout en utilisant les bonnes configurations .

Il est également utile de comprendre comment les bonnes configurations d'il y a des mois ou des années peuvent soudainement ne plus être jugées adéquates ou même dépassées par de nouvelles métriques et de nouvelles exigences qui nécessitent un cycle continu d'adaptations aux nouvelles exigences.

Nous garderons cette étude de cas sous observation pour évaluer également en termes d'indexation avec l'utilitaire SeoZoom, comment cette optimisation a pu impacter le positionnement et l'indexation, évaluer le graphique avant et après le 28 novembre, date à laquelle nous avons travaillé pour améliorer la réponse de les deux sites en question sur le même serveur (ilmiocaneleggenda.it et ilmiogattoeleggenda.it) et évaluant respectivement la tendance des deux sites dans une future analyse différentielle.

 

Vous avez des doutes ? Vous ne savez pas par où commencer ? Contactez-nous !

Nous avons toutes les réponses à vos questions pour vous aider à faire le bon choix.

Discute avec nous

Discutez directement avec notre support avant-vente.

0256569681

Contactez-nous par téléphone pendant les heures de bureau 9h30 - 19h30

Contactez-nous en ligne

Ouvrez une demande directement dans l'espace contact.

INFORMATIONS

Managed Server Srl est un acteur italien leader dans la fourniture de solutions système GNU/Linux avancées orientées vers la haute performance. Avec un modèle d'abonnement peu coûteux et prévisible, nous garantissons que nos clients ont accès à des technologies avancées en matière d'hébergement, de serveurs dédiés et de services cloud. En plus de cela, nous proposons des conseils système sur les systèmes Linux et une maintenance spécialisée en SGBD, sécurité informatique, Cloud et bien plus encore. Nous nous distinguons par notre expertise dans l'hébergement de CMS Open Source de premier plan tels que WordPress, WooCommerce, Drupal, Prestashop, Joomla, OpenCart et Magento, soutenus par un service d'assistance et de conseil de haut niveau adapté aux administrations publiques, aux PME et à toutes tailles.

Red Hat, Inc. détient les droits de Red Hat®, RHEL®, RedHat Linux® et CentOS® ; AlmaLinux™ est une marque commerciale d'AlmaLinux OS Foundation ; Rocky Linux® est une marque déposée de la Rocky Linux Foundation ; SUSE® est une marque déposée de SUSE LLC ; Canonical Ltd. détient les droits sur Ubuntu® ; Software in the Public Interest, Inc. détient les droits sur Debian® ; Linus Torvalds détient les droits sur Linux® ; FreeBSD® est une marque déposée de la FreeBSD Foundation ; NetBSD® est une marque déposée de la Fondation NetBSD ; OpenBSD® est une marque déposée de Theo de Raadt. Oracle Corporation détient les droits sur Oracle®, MySQL® et MyRocks® ; Percona® est une marque déposée de Percona LLC ; MariaDB® est une marque déposée de MariaDB Corporation Ab ; REDIS® est une marque déposée de Redis Labs Ltd. F5 Networks, Inc. détient les droits sur NGINX® et NGINX Plus® ; Varnish® est une marque déposée de Varnish Software AB. Adobe Inc. détient les droits sur Magento® ; PrestaShop® est une marque déposée de PrestaShop SA ; OpenCart® est une marque déposée d'OpenCart Limited. Automattic Inc. détient les droits sur WordPress®, WooCommerce® et JetPack® ; Open Source Matters, Inc. détient les droits sur Joomla® ; Dries Buytaert détient les droits sur Drupal®. Amazon Web Services, Inc. détient les droits sur AWS® ; Google LLC détient les droits sur Google Cloud™ et Chrome™ ; Facebook, Inc. détient les droits sur Facebook® ; Microsoft Corporation détient les droits sur Microsoft®, Azure® et Internet Explorer® ; La Fondation Mozilla détient les droits sur Firefox®. Apache® est une marque déposée de The Apache Software Foundation ; PHP® est une marque déposée du groupe PHP. CloudFlare® est une marque déposée de Cloudflare, Inc. ; NETSCOUT® est une marque déposée de NETSCOUT Systems Inc. ; ElasticSearch®, LogStash® et Kibana® sont des marques déposées d'Elastic NV. Ce site n'est affilié, sponsorisé ou autrement associé à aucune des entités mentionnées ci-dessus et ne représente aucune de ces entités de quelque manière que ce soit. Tous les droits sur les marques et noms de produits mentionnés sont la propriété de leurs titulaires respectifs des droits d'auteur. Toutes les autres marques mentionnées appartiennent à leurs titulaires. MANAGED SERVER® est une marque déposée au niveau européen par MANAGED SERVER SRL Via Enzo Ferrari, 9 62012 Civitanova Marche (MC) Italie.

JUSTE UN MOMENT !

Souhaitez-vous voir comment votre WooCommerce fonctionne sur nos systèmes sans avoir à migrer quoi que ce soit ? 

Entrez l'adresse de votre site WooCommerce et vous obtiendrez une démonstration navigable, sans avoir à faire absolument quoi que ce soit et entièrement gratuite.

Non merci, mes clients préfèrent le site lent.
Retour en haut de page