Lorsque vient le moment de choisir un plan d’hébergement, il est important de choisir celui qui correspondra le mieux aux exigences de votre site WordPress.

Par exemple, un site de commerce électronique qui reçoit 50 000 visiteurs par mois sera généralement beaucoup plus exigeant en termes de ressources qu’un simple blog avec le même volume de trafic.

Cela est simplement dû au fait que les sites de commerce électronique sont généralement de nature dynamique et qu’ils nécessitent davantage de ressources pour les requêtes en PHP et dans les bases de données.

C’est là que les workers PHP entrent en jeu. Vous trouverez ci-dessous des informations sur ce que sont les workers PHP et comment ils sont utilisés pour accélérer le traitement des requêtes sur votre site.

Qu’est-ce qu’un worker PHP ?

Dans le contexte de WordPress, les workers PHP construisent des pages, traitent des tâches d’arrière-plan planifiées, et plus encore. Comme les workers PHP sont directement responsables de la génération des pages HTML destinées aux visiteurs de votre site, ils déterminent le nombre de requêtes simultanées non mises en cache que votre site peut traiter dans un temps donné.

Par exemple, supposons que votre site WordPress soit équipé de deux workers PHP et qu’aucune mise en cache des pages ne soit configurée. Si quatre requêtes arrivent sur votre site exactement en même temps, deux d’entre elles seront traitées immédiatement, tandis que les deux autres devront attendre dans la file d’attente jusqu’à ce que les deux premières aient terminé leur traitement.

Ici, chez Kinsta, nous utilisons les workers PHP comme l’une des variables pour nos différents niveaux de plans. Par exemple, les plans Business 1 ont 4 workers PHP par site, tandis que les plans Enterprise 4 en ont 16.

Bien que nous mettions en place une mise en cache au niveau du serveur, pour les requêtes où le cache est contourné ou manqué, les workers PHP deviennent très importants car ils doivent fonctionner pour chaque requête.

En général, nous voyons beaucoup de requêtes non mises en cache sur les sites de commerce électronique et les forums communautaires. Ces sites nécessiteront donc des workers PHP supplémentaires pour garantir que chaque requête soit traitée sans retard ni délai.

Si votre site est hautement optimisé ou ne possède pas beaucoup de code PHP (par exemple un thème complexe ou beaucoup d’extensions WordPress), alors le traitement de chaque requête devrait se faire presque instantanément. Même avec 2 workers PHP et 4 requêtes, les quatre requêtes seraient traitées très rapidement.

En termes simples, un worker PHP est un processus en arrière-plan sur un serveur qui exécute du code PHP.

Comment WordPress utilise-t-il les workers PHP ?

Avant de savoir comment optimiser l’utilisation des workers PHP pour WordPress, nous devons tout d’abord comprendre comment WordPress utilise les workers PHP.

Une requête typique dans un environnement non mis en cache fera quelque chose comme ça :

  1. Le serveur web (Nginx ou Apache) reçoit une requête d’un visiteur.
  2. Nginx transmet la requête à PHP.
  3. PHP interroge la base de données MySQL selon les besoins et utilise les modèles PHP de votre thème pour générer une page HTML.
  4. PHP remet une page HTML rendue au serveur web.
  5. La page est servie au visiteur.

Dans le processus mis en évidence ci-dessus, l’étape 3 est celle qui demande le plus de temps et de ressources (CPU et RAM). Un site hautement optimisé, avec un minimum de requêtes dans la base de données et un code PHP efficace, passera assez rapidement la troisième étape.

Au contraire, un site dont le code PHP est mal écrit et qui effectue beaucoup de requêtes inutiles dans la base de données passera beaucoup plus de temps à l’étape 3, ce qui signifie que les requêtes occuperont les workers PHP pendant plus longtemps.

La relation entre les workers PHP et le CPU

En ce qui concerne les performances de WordPress, la relation entre les workers PHP et le CPU disponible est importante à prendre en considération.

Si le manque de ressources CPU est le goulot d’étranglement de votre site, l’augmentation du nombre de workers PHP n’augmentera pas la performance de votre site. Elle ne fera que permettre à votre site de traiter plus de requêtes en même temps avec une performance plus lente par requête.

Laissez-moi vous expliquer.

Imaginez une bouche d’incendie à laquelle est fixé un seul tuyau. Avec un seul tuyau raccordé, la bouche d’incendie est capable de fournir une pression d’eau suffisante. Maintenant, que se passe-t-il si nous attachons dix tuyaux à la bouche d’incendie ?

La pression d’eau limitée est répartie sur dix tuyaux, ce qui signifie que chaque tuyau individuel a une pression d’eau moindre pour faire le travail. Dans cette analogie, la bouche d’incendie est l’unité centrale, et les tuyaux sont les workers PHP.

Compte tenu de ce qui précède, vous devez vous méfier si votre hébergeur vous conseille constamment d’augmenter le nombre de workers PHP sans mentionner également le CPU.

Ici, chez Kinsta, nos conteneurs LXD personnalisés sont configurés pour disposer de ressources CPU et RAM suffisantes. Nous utilisons également des machines virtuelles C2 optimisées pour le calcul, équipées des processeurs les plus rapides de Google Cloud, pour aider les workers PHP de votre site à fonctionner plus efficacement. Notre infrastructure évolutive garantit que les workers PHP de votre site WordPress disposent de suffisamment de ressources CPU pour fonctionner au maximum de leurs performances.

Revenons un instant à l’analogie avec les bouches d’incendie.

Imaginez que vous soyez dans une situation où vous devez éteindre dix feux avec cinq tuyaux. Après avoir branché les cinq tuyaux, vous vous rendez compte que la bouche d’incendie fournit toujours une pression d’eau suffisante.

Dans cette situation, il serait judicieux de raccorder quelques tuyaux supplémentaires car la pression de l’eau de la bouche d’incendie n’est pas le goulot d’étranglement.

De même, si votre site est peu performant, même avec une surcharge de CPU et de RAM, vous devriez envisager d’augmenter le nombre de workers PHP afin d’améliorer les performances.

Comment optimiser l’utilisation du workers PHP par votre site

Nous avons expliqué que les workers PHP sont des processus en arrière-plan qui génèrent des pages HTML avec du code PHP. Aujourd’hui, la manière la plus évidente de réduire et d’optimiser l’utilisation des workers PHP est de réduire la quantité de CPU et de ressources PHP nécessaires pour répondre aux requêtes sur votre site.

Voici comment faire.

1. Configfurer une mise en cache pour votre site WordPress

La première étape pour réduire l’utilisation de PHP est de mettre en place des couches de mise en cache pour votre site WordPress. Par défaut, WordPress est un CMS dynamique qui répond à toutes les requêtes de pages à la demande.

Pour de nombreux sites comme les blogs, les magazines en ligne et les portfolios, il est inutile d’utiliser PHP pour générer dynamiquement des pages pour chaque requête.

Mise en cache de page

L’article de blog que vous lisez actuellement est l’exemple parfait d’une page qui n’a pas besoin d’être générée dynamiquement. Comme beaucoup de nos autres articles, le contenu de cet article est conçu pour être statique, de sorte qu’il n’est pas nécessaire de dépenser des ressources CPU pour générer des pages identiques en continu.

Il est préférable que PHP génère la page une fois et la mette en cache. La mise en cache des pages présente de nombreux avantages évidents par rapport à la génération dynamique de pages avec PHP.

Par exemple, imaginez qu’un article de blog sur votre site devienne viral et reçoive 100 000 pages vues dans les heures qui suivent sa publication. Sans la mise en cache des pages, vos workers PHP seraient probablement débordés et votre serveur tomberait probablement en panne.

Avec la mise en cache des pages, seule la vue de la première page serait générée dynamiquement. Les 99 999 autres requêtes seraient servies à partir de votre cache de pages, qui utilise relativement peu de ressources CPU.

Il existe deux façons de mettre en place la mise en cache des pages de votre site WordPress.

  1. Mise en cache des pages au niveau du serveur avec un serveur web comme Nginx.
  2. Mise en cache des pages à l’aide d’une extension WordPress comme WP-Rocket.

Pour des performances maximales, nous recommandons d’utiliser la mise en cache des pages au niveau du serveur chaque fois que cela est possible. Sur Kinsta, tous nos sites utilisent le module de cache FastCGI de Nginx pour des performances super rapides.

Si votre hébergeur ne propose pas d’option de mise en cache des pages au niveau du serveur, la meilleure option suivante est d’utiliser une extension WordPress de mise en cache pour implémenter la mise en cache des pages au niveau de l’application.

Cache objet

Pour les boutiques WooCommerce, les forums communautaires et autres sites WordPress qui ne peuvent pas utiliser efficacement la mise en cache des pages, l’ajout d’un cache objet persistant comme Redis en face de votre base de données MySQL peut améliorer les performances et réduire la charge des workers PHP.

Sans cache objet persistant, les requêtes de la base de données MySQL seront exécutées pour chaque requête même si le résultat est identique à une requête précédente.

Par exemple, un site de forum communautaire qui contourne le cache des pages effectuera des requêtes distinctes identiques à la base de données pour récupérer les données des articles afin de construire une page.

Pour les sites à fort trafic et à forte base de données, cette méthode de requêtes de la base de données est inefficace car elle utilise des workers PHP pour générer des résultats de requêtes identiques pour des requêtes distinctes. C’est là qu’intervient Redis.

Redis stocke les résultats des requêtes de la base de données dans la mémoire vive, ce qui permet à PHP de saisir les résultats des requêtes qui ont déjà été exécutées. Cette méthode de mise en cache objet permet aux workers PHP d’économiser les ressources de l’unité centrale et de passer moins de temps à répondre à une requête, car elle supprime le besoin de requêtes répétitives dans la base de données.

2. Optimisez votre code PHP

Outre la mise en place de la mise en cache des pages, une autre stratégie qui vous aidera à réduire l’utilisation des workers PHP est l’optimisation de votre code PHP. Dans le contexte de WordPress, « optimiser le code PHP » peut signifier différentes choses, alors regardons les choses de plus près.

L’une des caractéristiques les plus appréciées et les plus détestées de WordPress (selon la personne à qui vous le demandez) est son extensibilité via des extensions et des extraits de code.

Si vous souhaitez ajouter un widget de cours de la bourse à votre site WordPress, il existe une extension pour cela. De même, si vous souhaitez ajouter des polices personnalisées, il existe un extrait de code functions.php  pour cela aussi. 

L’extension du cœur de WordPress avec des fonctionnalités supplémentaires est devenue si facile que nous en faisons souvent trop sans penser à l’impact potentiel sur les performances du site.

Par conséquent, la première façon d’optimiser votre code PHP est de réaliser un audit à l’échelle du site afin de déterminer quelles extensions et extraits de code sont réellement nécessaires.

Choisissez des extensions de qualité

Le plus souvent, le nombre d’extensions sur votre site WordPress n’est pas aussi important que la qualité des extensions. Si une extension n’a pas été mis à jour au cours des six derniers mois, nous vous recommandons d’en choisir un autre qui convienne.

La raison en est que WordPress est constamment amélioré. Si un plugin n’a pas été mise à jour depuis des années, il est probable que son code n’utilise pas les dernières pratiques de développement et de sécurité de WordPress.

Inversement, si une extension est constamment mise à jour toutes les semaines, il y a de fortes chances que le développeur soit sérieux quant à la qualité, ce qui en fait un bon choix pour votre site WordPress.

N’utilisez les extensions qu’en cas de besoin

Si vous cherchez à effectuer une tâche simple sur votre site, comme ajouter du JavaScript ou du CSS, vous n’avez pas toujours besoin d’une extension pour cela. Vous pouvez plutôt ajouter du code directement dans les modèles PHP de votre thème ou dans le fichier style.css avec un thème enfant.

La prochaine fois que vous envisagez d’installer une extension, prenez d’abord le temps de vérifier si elle est nécessaire à 100 %. Parfois, il n’y a pas moyen d’installer une autre extension et c’est bon. D’autres fois, vous pouvez éviter d’ajouter du code supplémentaire en n’installant pas d’extension inutile.

Choisissez des thèmes légers

D’après notre expérience de surveillance de milliers de sites WordPress, nous avons constaté que les thèmes sont parfois la cause des mauvaises performances de PHP. Pour répondre à la polyvalence de WordPress en tant que CMS d’usage général, certains développeurs codent des thèmes pour travailler sur une variété de cas d’utilisation.

Il en résulte souvent des thèmes lourds en code et gonflés qui n’utilisent pas efficacement PHP et les requêtes de base de données.

Lors de la construction d’un site WordPress, il est important de choisir un thème qui soit le plus performant et le plus personnalisableGeneratePress, OceanWP et Astra en sont trois exemples.

3. Choisissez un hébergeur WordPress axé sur la performance

Croyez-le ou non, le choix du bon hébergeur WordPress peut avoir un impact énorme sur les performances de votre site. Comme l’efficacité d’un worker PHP est directement corrélée à l’unité centrale et à la mémoire vive, l’hébergement de votre site sur un serveur moderne doté d’un matériel de pointe peut vous aider à optimiser l’utilisation du worker PHP.

Voici deux exemples montrant pourquoi le choix d’un hébergeur axé sur les performances est important pour vos sites WordPress.

Des processeurs performants

PHP utilise les ressources du processeur pour exécuter le code. Un CPU plus rapide signifie une exécution de code plus rapide. Chez Kinsta, nous utilisons les serveurs les plus rapides de Google Cloud – des VM C2 optimisées pour le calcul.

Ces VM sont équipées des derniers processeurs Intel Xeon capables de fonctionner à 3,8 GHz tout cœur turbo. Lors de nos tests de référence, nous avons constaté que les machines C2 surpassent de 2 à 4 fois les machines N1 traditionnelles.

Stockage SSD rapide

La vitesse d’entrée/sortie du disque peut avoir un impact direct sur l’exécution du code et les requêtes de la base de données. Si votre base de données est stockée sur un disque mécanique lent ou un SSD basé sur le cloud sans IOPS suffisant (opérations d’entrée/sortie par seconde), vos workers PHP seront obligés de passer plus de temps à répondre à une requête.

Nous utilisons le stockage SSD haute performance de Google Cloud Platform pour garantir que votre site WordPress ait accès à des entrées/sorties rapides sur le disque.

4. Travailler avec un expert en performance (facultatif)

Si vous n’êtes pas sûr de savoir comment résoudre un problème de performance sur votre site, nous vous recommandons de travailler avec un expert en performance qualifié pour diagnostiquer le problème.

Un expert peut vous aider à identifier des goulots d’étranglement spécifiques dans votre code en utilisant des outils de surveillance avancés comme New Relic ou l’extension WordPress Query Monitor.

En zoomant et en inspectant chaque processus PHP et chaque requête de base de données, il est possible d’identifier des blocs de code spécifiques et leurs caractéristiques associées qui sollicitent fortement les workers PHP de votre site.

Pour résumer l’optimisation des workers PHP, gardez les conseils suivants à l’esprit.

  1. Le CPU et la RAM devraient être augmentés en même temps que les workers PHP. Si l’utilisation du CPU est verrouillée à 100 %, l’ajout de workers PHP supplémentaires n’améliorera pas les performances.
  2. Héberger votre site chez un hébergeur axé sur les performances peut résoudre de nombreux problèmes de performances.
  3. La mise en cache des pages et des objets peut réduire considérablement la charge des workers PHP.
  4. L’utilisation d’extensions et de thèmes WordPress de qualité peut réduire la quantité de code inutilement gonflé sur votre site.
  5. Si nécessaire, travaillez avec un expert en performance pour identifier et résoudre des problèmes complexes.

Résultats d’un nombre insuffisant de workers PHP

Afin d’obtenir des performances rapides et fiables pour votre site WordPress, il est important de s’assurer qu’il dispose d’un nombre suffisant de workers PHP. Lorsque les workers PHP sont déjà occupés sur un site, ils commencent à constituer une file d’attente.

Une fois que vous avez atteint votre limite de workers PHP, la file d’attente commence à repousser les requêtes plus anciennes, ce qui peut entraîner des erreurs 504 ou des requêtes incomplètes.

Une autre erreur fréquente que nous constatons en raison du manque de workers PHP est l’erreur 502 de mauvaise passerelle. Elles sont légèrement différentes des erreurs 504 car l’erreur se produit après un délai de 60 secondes dans la file d’attente des workers PHP.

Non seulement ces erreurs présentent une mauvaise expérience utilisateur pour vos visiteurs, mais elles peuvent également avoir un impact négatif sur le référencement de votre site.

Une erreur 502 (Bad Gateway).
Une erreur 502 (Bad Gateway).

Plusieurs facteurs différents peuvent être à l’origine d’un chargement lent des pages ou d’erreurs. Par exemple, si une requête non mise en cache requiert beaucoup de données de la base de données, la requête résultante peut prendre de 20 à 30 secondes.

Dans cette situation, un worker PHP serait occupé pendant au moins une demi-minute. Si votre site ne dispose que de deux workers PHP, deux ou trois de ces longues requêtes peuvent suffire pour commencer à provoquer des erreurs.

Pour résoudre ce problème, l’optimisation de la base de données MySQL et l’augmentation du nombre de workers PHP si l’unité centrale n’est pas déjà au maximum peuvent améliorer les performances.

Estimation du nombre de workers PHP nécessaires

Chacun des plans d’hébergement chez Kinsta comprend un certain nombre de workers PHP. Le nombre de workers PHP inclus est basé sur les mesures d’utilisation des ressources historiques que nous avons recueillies au cours des dernières années. En général, les sites dont le contenu est principalement statique – articles, pages statiques et portfolios – ne nécessitent pas beaucoup de workers PHP.

Pour les sites WordPress plus importants, dotés de fonctionnalités plus dynamiques comme le commerce électronique ou les forums de discussion, nous avons trouvé que 4 workers PHP constituaient un bon point de départ. Toutefois, cela peut varier d’un site à l’autre, car chacun d’entre eux aura son propre ensemble de thèmes, d’extensions, de requêtes de base de données et son propre ratio cache / non-cache.

Dans certains cas, il peut être nécessaire d’augmenter le nombre de workers  PHP pour obtenir des résultats rapides et fiables. Si vous n’êtes pas sûr du nombre de workers PHP dont votre site a besoin sur Kinsta, nos équipes de vente et de support peuvent vous aider à le découvrir.

Graphique des limites des workers PHP

Le graphique des limites des workers PHP dans l’analyse de MyKinsta vous permet de voir combien de fois le moteur PHP a signalé avoir atteint le nombre maximum de workers alloués dans son journal d’erreurs. Ce graphique peut vous aider à évaluer si les optimisations de performance ont un impact sur l’utilisation de vos workers PHP.

Contournement du cache supérieur.
Contournement du cache supérieur.

Par exemple, si vous passez de la version 5.6 à la version 7.4 de votre site, vous constaterez probablement une baisse des limites des workers PHP, car la version 7.4 est beaucoup plus rapide que la version 5.6.

De même, si vous avez travaillé avec un expert en performance pour corriger de longues requêtes de base de données et passer à un thème plus léger, vous pouvez utiliser le graphique des limites des workers PHP pour voir les différences avant et après les optimisations.

Graphique d’analyse du cache

Vous pouvez également utiliser le rapport d’analyse du cache dans MyKinsta pour déterminer le nombre d’accès au cache, de contournements, d’échecs et d’expirations. Ces données peuvent être particulièrement utiles pour optimiser l’utilisation des workers PHP de votre site.

Contournement de cache avec des chaînes de requête

Par défaut, les URLs comportant des chaînes de requête comme https://kinstalife.com/?query=123 contournent le cache de la page. Dans certains cas, les chaînes de requête peuvent entraîner une forte augmentation de l’utilisation inutile du PHP et du CPU.

Par exemple, si vous visitez un lien de Facebook, vous verrez souvent la chaîne de requête ?fbclid= à la fin de l’URL. De même, vous pouvez voir les réglages de suivi UTM après avoir cliqué sur un lien dans un bulletin d’information électronique.

Une URL avec une chaîne de requête (?querystring=123).
Une URL avec une chaîne de requête (?querystring=123).

Si un article sur votre site devient viral et est constamment consulté à l’aide d’une chaîne de requête, vous pourrez identifier l’URL spécifique grâce au rapport d’analyse du cache.

Avec cette information clé, vous pouvez alors contacter notre équipe de support pour forcer le cache de cette URL spécifique afin de réduire la charge sur vos workers PHP.

Identifier les extensions gourmandes en ressources

Dans certains cas, le graphique d’analyse du cache peut également être utilisé pour identifier les extensions et les processus gourmands en ressources.

Par exemple, si vous constatez que l’URL de contournement du cache pointe vers un fichier situé dans le répertoire d’une extension spécifique, il y a de fortes chances que cette extension soit responsable de la forte utilisation des workers PHP.

Si vous voyez beaucoup de requêtes liées à une extesnion dans votre liste de contournement du cache, vous pouvez travailler avec un développeur pour résoudre le problème ou passer à une extension qui utilise moins de ressources.

Résumé

L’objectif de maintenir un site WordPress rapide est de maximiser l’efficacité de l’administration. Lorsque les workers PHP sont utilisés correctement en trouvant un équilibre entre le nombre de workers, l’utilisation du CPU et l’optimisation du code, WordPress peut être un CMS extrêmement performant.

Envisagez d’utiliser la fonction de minification du code si vous êtes un client Kinsta. Cette fonction est intégrée directement dans le tableau de bord MyKinsta et permet aux clients d’activer facilement la minification automatique de CSS et JavaScript d’un simple clic.

Si vous avez des questions concernant le nombre de workers PHP dont vous pourriez avoir besoin, ou si vous pensez voir des erreurs dues au manque de workers PHP, veuillez ouvrir un ticket avec notre équipe de support pour obtenir de l’aide.

À votre tour : Quelles stratégies d’optimisation utilisez-vous pour assurer le bon fonctionnement de votre site WordPress ? Faites-le nous savoir dans les commentaires !