Juillet 6 2022

Accélérez WordPress et maximisez les performances de MySQL via la connexion Unix Domain Socket

Les sockets de domaine Unix améliorent-ils les performances de WordPress via une connexion localhost ? Voyons cette astuce simple ensemble.

Print Friendly, PDF & Email

Il est bien connu que l'étude de la technologie au moins de notre part a pour seul but d'obtenir des solutions pratiques et tangibles pour améliorer les performances, la stabilité et la rapidité des sites Web de nos précieux clients.

Aussi passionnant que cela puisse être, tester, essayer, expérimenter de nouvelles technologies, serveurs web, configurations, au final l'objectif ultime est toujours de faire mieux.

Dans un article précédent, nous avons comparé la vitesse, le débit et les avantages que l'on peut obtenir en utilisant les sockets de domaine Unix plutôt que des sockets TCP pour établir une connexion avec une base de données MySQL.

Parce qu'essentiellement, avoir une base de données locale et se connecter via TCP comme s'il s'agissait d'une base de données distante implique nécessairement toutes les opérations au niveau TCP pour établir une connexion, tout d'abord la prise de contact à trois voies TCP.

Poignée de main à trois voies

Ce processus implique nécessairement des opérations supplémentaires au niveau du réseau, et une latence plus importante que l'ouverture d'un descripteur de fichier UNIX, rendant effectivement la connexion de notre CMS WordPress (mais le discours est valable pour tout autre CMS) plus lente et moins performante par rapport à l'utilisation d'UNIX PRISE DE DOMAINE.

Les avantages que nous avons déjà largement vus dans l'article précédent qui traitait de la différence de performances entre les connexions MySQL via socket plutôt que MySQL via TCP, mais évidemment un article technique peut être inutile s'il n'est pas adapté à notre objectif qui est de rendre notre installation WordPress ou WooCommerce plus performante.

Les sockets de domaine Unix améliorent-ils les performances de WordPress ?

 

Panoramica

Sur certains systèmes WordPress, une simple modification de votre fichier de configuration peut accélérer la communication entre WordPress et votre base de données. Si votre installation WordPress est sous Linux, alors la vôtre DB_HOST a pour cadre hôte local ou 127.0.0.1 il peut être possible d'utiliser Unix Domain Sockets pour accélérer votre système et la communication avec la base de données MySQL.

Ce didacticiel vous montrera comment procéder, expliquera le raisonnement sous-jacent et testera les résultats.

Procédure

Le codex WordPress mentionne cette technique dans la documentation sur l'édition du fichier wp-config.php, mais il n'entre pas dans les détails.

Si votre serveur Web a une configuration typique sous Linux, la procédure peut être aussi simple que d'ouvrir le fichier/wp-config.phpfichier dans un éditeur, puis recherchez une ligne comme celle-ci :

define( 'DB_HOST', 'localhost' );

ou ca:

define( 'DB_HOST', '127.0.0.1' );

et en le remplaçant par ceci :

define( 'DB_HOST', 'localhost:/var/lib/mysql/mysql.sock' );

vous aurez demandé à votre installation WordPress d'utiliser le descripteur de fichier socket MySQL plutôt que la connexion TCP.

Résolution des problèmes connus

Si le paramètre ci-dessus ne fonctionne pas et que vous disposez d'un accès shell à votre hébergeur, vous pouvez vérifier le nom du socket de domaine Unix à l'aide de la commande lsof, qui signifie lister les fichiers ouverts.

$ lsof -U | grep mysql
mysqld 737 mysql 37u  unix 0xffffa0a4b9628400 0t0 15179 /var/run/mysqld/mysqld.sock type=STREAM

Cette commande fonctionnera à la fois pour les bases de données MySQL et MariaDB qui sont nos très bonnes et préférées Serveur Percona. Si vous ne voyez pas de sortie similaire à celle illustrée ci-dessus, un socket de domaine Unix n'est pas disponible pour vous. Si vous obtenez une liste, mais que le chemin du socket est différent de/var/run/mysqld/mysqld.sock, copiez le bon chemin de socket et collez-le dans le vôtre wp-config.php après localhost:dans ta définition DB_HOST

Par exemple, dans les systèmes RedHat Linux dérivés, tels que RHEL lui-même, CentOS, Fedora, Almalinux, Rockylinux, Scientific Linux, le chemin est normalement /var/lib/mysql/mysql.sock

Démontons quelques légendes urbaines

De mauvaises informations circulent sur Internet à ce sujet. Ce qui suit devrait apaiser toutes les craintes.

  • Les sockets de domaine Unix ne sont pas fiables et la corruption des données est possible.
    FALSE - Au moins dans ce cas. Il existe un type d'UDS qui est défini comme non fiable, appelé SOCK_DGRAM. Mais letype = FLUX indiqué par la commande lsof  indique qu'il s'agit d'un SOCK_STREAM UDS qui garantit la livraison d'un flux de données ordonné. Il est hautement improbable qu'un serveur de base de données utilise jamais un datagramme UDS. Pour référence, voir la définition de SOCK_STREAM .
  • Sur les systèmes Linux modernes, l'utilisation de TCP/IP avec localhost est aussi rapide que les sockets de domaine Unix.
    FALSE - Si la prise fonctionne() il est appelé avec un domaine de socket de OF_INET o AF_INET6(Internet Protocol v4 ou v6), quelle que soit l'adresse IP utilisée, toutes les communications auront une surcharge de protocole TCP / IP. Les sockets de domaine Unix sont un type de communication interprocessus (IPC) qui a beaucoup moins de surcharge de traitement que TCP / IP.
  • Bien qu'il y ait moins de frais généraux, la différence de performances n'est pas si grande.
    POSSIBLE - le Pilote de bouclage TCP/IP localsous Linux, il effectue certaines optimisations, telles que le saut de la génération et de la vérification de la somme de contrôle. Cependant, les benchmarks montrent que le passage de TCP / IP a Socket de domaine UNIX cela améliorera la latence de connexion et la vitesse de transfert de données. Plus il y a de données transférées par requête, plus le taux de transfert de données sera rapide. Étant donné que WordPress utilise de grands ensembles de données et de nombreuses requêtes de base de données lors de l'enregistrement ou de l'affichage d'une page Web, l'utilisation d'UNIX DOMAIN SOCKET améliorera les performances malgré tout. Cependant, lorsque la base de données WordPress est sur l'hôte local, les requêtes ne prennent que 3% à 6% du temps d'exécution lors du chargement d'une page. Vous ne remarquerez probablement une amélioration de la vitesse que sur les sites Web à fort trafic et gourmands en données. La vraie réponse dépend de votre système, de votre trafic Web et de votre point de vue.

Comment fonctionne cette approche ?

TCP/IP est un protocole de communication réseau. Une poignée de main à trois voies (la poignée de main à trois voies susmentionnée) doit d'abord être effectuée afin d'établir ensuite une connexion réseau TCP / IP et que les données puissent être envoyées.

Ensuite, toutes les données envoyées sont d'abord divisées en paquets plus petits (ceci est nécessaire pour un partage efficace de la bande passante du réseau). La source et la destination sont ajoutées à une enveloppe autour de chaque paquet de données. Les données de vérification des erreurs sont calculées et également ajoutées à l'enveloppe. Un numéro de séquence est également ajouté à l'enveloppe afin que le destinataire puisse corriger tout paquet de données hors service. Des données supplémentaires sont également ajoutées à chaque enveloppe de paquet pour aider à identifier et acheminer le paquet sur les réseaux locaux. Le destinataire doit vérifier et corriger tous les paquets hors service, vérifier chaque paquet pour les erreurs, envoyer un accusé de réception pour chaque paquet et réassembler le bloc de données d'origine à partir des données de chaque paquet.

Remarque : Le calcul de la somme de contrôle et la vérification des erreurs sont ignorés pour les connexions localhost sur les systèmes Linux modernes.

Les sockets de domaine Unix (sockets de domaine Unix) n'ont pas besoin de cette fragmentation et de ce traitement de données supplémentaires.  Ils fonctionnent plus comme la lecture et l'écriture dans un fichier, mais contrairement à un fichier normal, les données sont transmises à la mémoire système plutôt qu'à un lecteur de disque. Pour cette raison, les sockets de domaine Unix déplacent les données plus rapidement et plus efficacement que TCP / IP, en particulier lorsque vous êtes équipé d'une RAM rapide au niveau matériel.

Résultat du test

Le graphique montre des exemples de temps de chargement de pages WordPress utilisant TCP/IP et Unix Domain Sockets comme méthode de connexion à la base de données. Il y a eu une amélioration moyenne de la vitesse de 25 % avec les sockets de domaine Unix. Les barres d'erreur montrent également que les sockets de domaine Unix ont réduit la variance de l'exécution de 20 %.

Quels bénéfices en attendre et quand l'utiliser ?

On parle en fait d'un secret de pulcinella, aussi simple à mettre en oeuvre que peu utilisé. Nous migrons des dizaines de sites Web WordPress et WooCommerce chaque jour et nous utilisons toujours (et toujours signifie toujours, c'est-à-dire 100 % des cas) en utilisant localhost ou 127.0.0.1 dans la configuration wp-config.php

Certes, appliquer une virtuosité telle que celle décrite est à la portée de tous même en faisant de simples tentatives, cependant l'obtention de résultats tangibles n'a de sens qu'une fois résolus les autres problèmes de performance.

Par exemple, il serait inutile de récupérer 5ms de vitesse et d'avoir ensuite 1 seconde de latence du fait du manque d'index sur les tables, ou d'avoir des limites de performances TCP dues au manque de TCP BBR par exemple.

Il en est autrement dans le cas où des opérations massives sont réalisées sur la base de données, comme des importations de catalogues CSV sur WooCommerce, des changements massifs de prix, ou des opérations de ce type, dont le crawl du sitemap par les crawlers de Google.

Bref, cette astuce doit être considérée comme la cerise sur le gâteau, capable d'améliorer quelque chose de déjà bien de lui et tout Processus d'optimisation des performances de WordPress que nous avons déjà longuement décrit, et ne fera certainement pas de miracles.

Avec l'avènement de Google Vitaux Web de base et de l'exigence imposée par Google pour obtenir un site Web rapide et performant, cependant, même quelques millisecondes peuvent être des valeurs importantes à prendre en considération en vue d'une stratégie d'optimisation et d'amélioration beaucoup plus large et plus productive.

Le meilleur retour sur cette technique est sûrement ce qu'elle peut vous apporter Serveurs Dédiés et des instances dédiées telles que Cloud ou VPS, dimensionnées de manière adéquate au niveau des ressources et configurées de manière experte au niveau du logiciel de réglage.

conclusion

Comme mentionné ci-dessus, si la base de données est sur l'hôte local, les requêtes de base de données représentent moins de 6% du temps d'exécution pendant que WordPress traite une requête. L'effet global du passage de TCP / IP à Unix Domain Socket sera à peine perceptible, sauf sur les sites Web très fréquentés. Mais pour un changement aussi simple, pourquoi ne pas économiser un peu sur le temps de traitement et la consommation d'énergie ?

Comme répété, nous avons parlé de WordPress, mais la même chose s'applique à n'importe quel CMS.

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

ManagedServer.it est le premier fournisseur italien de solutions d'hébergement hautes performances. Notre modèle d'abonnement est abordable et prévisible, afin que les clients puissent accéder à nos technologies d'hébergement fiables, à nos serveurs dédiés et au cloud. ManagedServer.it offre également d'excellents services d'assistance et de conseil sur l'hébergement des principaux CMS Open Source tels que WordPress, WooCommerce, Drupal, Prestashop, Magento.

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.
haut