Table des matières de l'article :
Aujourd’hui, les performances d’un site Web sont essentielles pour garantir une expérience utilisateur fluide et engageante. BuddyBoss, une plateforme puissante pour créer des communautés en ligne basées sur WordPress, ne fait pas exception. L'optimisation des performances de BuddyBoss peut faire la différence entre un site lent et un site réactif, en améliorant votre classement dans les moteurs de recherche et en augmentant la satisfaction des utilisateurs. Dans cet article, nous explorerons notre service d'optimisation ByddyBoss pour augmenter la vitesse et l'efficacité de BuddyBoss, garantissant ainsi que votre site offre toujours des performances optimales.
Qu’est-ce que BuddyBoss ?
BuddyBoss est une plateforme robuste et flexible conçue pour créer et gérer des communautés en ligne, des formations e-learning et des sites d'adhésion. Basée sur WordPress, BuddyBoss offre un large éventail de fonctionnalités facilitant l'interaction des utilisateurs, telles que des forums, des groupes, des profils personnalisés et une messagerie privée. Grâce à son intégration fluide avec les plugins et thèmes populaires, BuddyBoss vous permet d'étendre facilement les capacités de votre site, ce qui en fait une solution idéale pour les enseignants, les entrepreneurs et les créateurs de contenu. Que vous souhaitiez créer un réseau social pour un groupe ciblé ou développer un portail éducatif complet, BuddyBoss vous offre les outils nécessaires pour créer une expérience utilisateur engageante et dynamique. De plus, la plateforme fournit un environnement sécurisé et personnalisable, encourageant la collaboration et le partage des connaissances. Pour plus d'informations, consultez le site web officiel de BuddyBoss ici.
Conditions requises pour BuddyBoss
Pour assurer un fonctionnement optimal de BuddyBoss, il est essentiel d'avoir une configuration de serveur adéquate, notamment en fonction du nombre d'abonnés. BuddyBoss est un logiciel gourmand en ressources, nécessitant une puissance CPU et RAM importante. Pour les communautés de moins de 1.000 4 membres, BuddyBoss sur le site officiel recommande un serveur avec au moins 1.000 Go de RAM et un processeur multicœur. Pour les sites comptant entre 10.000 8 et 10.000 16 abonnés, il est préférable de disposer d'au moins XNUMX Go de RAM et d'un processeur performant. Pour les communautés plus grandes, comptant plus de XNUMX XNUMX membres, vous devez envisager des solutions de serveur dédié ou cloud avec au moins XNUMX Go de RAM et un processeur haut de gamme.
Cependant, il est clair que les exigences matérielles indiquées par le fabricant sont anecdotiquement sous-dimensionnées, peut-être parce que dans la phase d'analyse initiale, qui est également la phase d'avant-vente, si des solutions techniquement plus grandes, bien dimensionnées et donc plus coûteuses étaient indiquées, il pourrait avoir un effet dissuasif sur l'achat du plugin et il est donc commercialement plus avantageux d'évoquer dans un premier temps des solutions économiques, de finaliser la vente et seulement ensuite de mettre l'acheteur face à la réalité en termes de charge et de ressources matérielles.
Un exemple concret de ces besoins nous vient d'un de nos clients (confidentiel) qui gère une communauté de 10.000 2 utilisateurs et intègre plusieurs fonctionnalités de BuddyBoss à LearnDash (une extension WordPress performante permettant de créer et de vendre des cours en ligne, avec des fonctionnalités avancées comme les quiz, les certificats et le suivi de la progression des utilisateurs). Pour prendre en charge cette configuration complexe et garantir une expérience utilisateur optimale, la solution adoptée a consisté à utiliser un serveur doté de 32 cœurs et 64 threads, de 128 Go de RAM et de deux SSD NVMe en RAID 1.
Cette configuration avancée est nécessaire car BuddyBoss, en obligeant les utilisateurs à se connecter à son espace privé, ne permet pas l'utilisation de techniques de cache standards comme WP Rocket ou de plugins Full Page Cache comme Varnish, qui seraient totalement inutiles pour les utilisateurs connectés. . Cela implique que la configuration du serveur doit être optimisée pour gérer des charges dynamiques élevées, garantissant toujours une réponse rapide et une expérience utilisateur fluide, même sous un stress élevé.
L'inutilité des plugins Cache, des Server Side Caches et des conseils officiels.
Pour optimiser les performances de BuddyBoss, il est important de comprendre que l'utilisation de plugins de cache et de caches côté serveur courants peut s'avérer totalement inefficace . Des plugins comme WP Fastest Cache, SuperCache, WP Rocket et W3 Total Cache sont des outils puissants pour de nombreux sites WordPress, car ils réduisent le temps de chargement des pages en stockant des versions statiques. De même, les solutions de cache côté serveur telles que Varnish Cache et NGINX Proxy Cache sont fréquemment utilisées pour améliorer les performances globales des applications web. Cependant, BuddyBoss possède une particularité qui complexifie l'utilisation de ces techniques : l'obligation pour les utilisateurs d'être connectés à leur espace membre.
Lorsqu'un utilisateur est connecté, chaque page consultée est hautement personnalisée et dynamique, contenant des informations qui lui sont propres, telles que des notifications, des messages, son activité récente, etc. De ce fait, les techniques de mise en cache de page complète, qui stockent des versions statiques des pages pour accélérer leur chargement, ne sont pas efficaces. Les solutions de mise en cache mentionnées précédemment, performantes pour le contenu statique, deviennent inutiles dans un contexte où chaque requête au serveur doit être traitée individuellement.
Par conséquent, pour garantir des performances optimales avec BuddyBoss, vous devez investir dans du matériel puissant et dans une optimisation au niveau des applications.
Les conseils officiels de BuddyBoss soulignent l'importance de l'optimisation au niveau de la base de données et des applications plutôt que de s'appuyer exclusivement sur des solutions de mise en cache, cependant ce sont des conseils très basiques et peu techniques et le mécontentement des utilisateurs de BuddyBoss dans les grandes communautés est toujours très fréquent.
Chez Managed Server Srl, nous souhaitions donc mettre à disposition un service d'optimisation des performances pour BuddyBoss , qui vise, en plus de l'optimisation habituelle pour WordPress, une approche applicative pour optimiser les performances de l'application BuddyBoss et de son écosystème, notamment WooCommerce, LearnDash, BuddyPress et divers plugins pouvant être utilisés pour créer une communauté avec BuddyBoss.
Un cas réel d'optimisation BuddyBoss
Depuis quelques mois nous avons un nouveau client opérant dans le secteur de la formation avec une communauté de plus de 10 mille membres, l'offre de formation est créée avec une combinaison de plugins tels que LearnDash, WooCommerce, UCanTinny, WooCommerce et bien d'autres. Le client a consulté plusieurs fournisseurs d'hébergement et de conseil système, mais aucun d'entre eux, à l'exception du cache côté serveur, ne s'est jamais concentré sur le concept exprimé précédemment, à savoir que BuddyBoss (ainsi que tous les sites qui nécessitent une connexion utilisateur) bénéficient de manière significative de la Technologies de cache pleine page.
Il faut dire que les sociétés de systèmes ne disposent généralement pas de compétences en développement parmi leur personnel, et que les sociétés de développement ne disposent pas non plus de compétences en systèmes. Cet écart a très souvent tendance à ne pas avoir une vision globale, du point de vue des performances côté serveur et des performances applicatives.
On se retrouve souvent dans une situation de rejet de la responsabilité où le développeur prétend que le site est lent à cause du serveur et du service système, et l'ingénieur système finit par accuser le développeur et l'application qui est terriblement lente et mal optimisée.
Si nous devions prendre parti entre ces deux lectures, nous serions certainement en faveur de l'ingénieur système et pas seulement par proximité et solidarité professionnelles. Il est en effet indéniable qu'un pachyderme comme BuddyBoss ne brille pas en termes de performances et de rapidité car il est lui-même développé sur WordPress avec des technologies lentes comme PHP et MySQL plutôt que sur Go, Node.js plus moderne avec peut-être quelques DB NOSQL comme MongoDB ou Cassandra.
Cependant, il faut aussi se mettre à la place du client final, qui n'est souvent pas un technicien, mais un entrepreneur qui vise à essayer d'obtenir les meilleurs résultats possibles avec les outils (souvent choisis par d'autres) qu'il trouve.
En bref, ce que nous devons faire, c'est sortir de la logique de rejet de la responsabilité dans laquelle tout le monde est perdant, mais essayer d'offrir le meilleur support serveur, système et applicatif afin d'obtenir les meilleures performances possibles, en jouant toutes les cartes possibles et aussi tous les as dans la manche.
Matériel puissant et de bonne taille à des coûts abordables.
Comme indiqué, BuddyBoss nécessite un matériel puissant et adapté pour garantir des performances optimales. Cependant, une même configuration matérielle peut engendrer des coûts très différents selon le fournisseur de services et le centre de données choisis. Si vous envisagez d'installer BuddyBoss sur une instance cloud, vous ignorez probablement l'écart de coût important entre une instance physique et une instance cloud aux fonctionnalités équivalentes. Les instances physiques offrent souvent des performances supérieures à moindre coût que leurs homologues cloud, notamment compte tenu des besoins importants en ressources de BuddyBoss.
Même pour un serveur dédié, il est essentiel de savoir où l'acheter pour obtenir le meilleur rapport qualité-prix. Il est crucial de choisir des centres de données certifiés ISO 27001 et conformes au RGPD afin de garantir la sécurité et la conformité réglementaire sans se ruiner. Choisir le bon centre de données a un impact non seulement sur les coûts, mais aussi sur la fiabilité et la sécurité du service.
Notre expérience, acquise depuis 2005, nous a permis de relever de nombreux défis professionnels dans le secteur de l'hébergement et des systèmes Linux. Grâce à cette vaste expérience, nous sommes en mesure de sélectionner les technologies matérielles les plus adaptées à vos besoins, tant au niveau des centres de données que des serveurs, garantissant ainsi des performances et une sécurité optimales à un coût abordable. En tant que fournisseurs indépendants, nous pouvons comparer les devis et choisir les meilleures solutions, évitant ainsi les surcoûts inutiles et optimisant votre investissement matériel.
Réglage et optimisation côté serveur.
Une configuration serveur optimale est essentielle pour garantir les meilleures performances de BuddyBoss. Choisir les bons logiciels et les configurer de manière optimale peut faire toute la différence entre un site aux performances moyennes et un site exceptionnellement rapide et stable. Par exemple, il existe une différence significative entre installer une configuration standard avec NGINX, PHP-FPM, MariaDB et Varnish et configurer cette même configuration en optimisant en profondeur le système de fichiers, la base de données et l'interpréteur PHP afin de maximiser les performances.
Optimiser la pile de serveurs signifie aller au-delà de la simple installation de logiciels. Vous devez affiner le système de fichiers pour améliorer la gestion des fichiers et les E/S, configurer la base de données pour optimiser la gestion des requêtes et des transactions, et régler PHP-FPM pour mieux gérer les processus et la mémoire. Ce type d’optimisation nécessite une connaissance approfondie du fonctionnement des différents composants et de la manière dont ils interagissent les uns avec les autres.
Nous possédons une vaste expérience en optimisation côté serveur, notamment des moteurs InnoDB et AriaDB utilisés par des SGBD tels que Percona Server ou MariaDB. Correctement configurés, ces moteurs de base de données offrent des performances nettement supérieures, réduisant les temps de réponse et améliorant la gestion des transactions. Notre expertise nous permet d'optimiser ces composants afin de tirer pleinement parti des ressources matérielles disponibles, améliorant ainsi la vitesse et la stabilité globale du système.
Profilage d'application avec New Relic (ou tout autre APM)
L'optimisation des applications BuddyBoss exige une approche rigoureuse pour identifier et résoudre les goulots d'étranglement en matière de performances. L'une des techniques les plus efficaces pour y parvenir est le profilage des applications à l'aide d'outils de gestion des performances applicatives (APM) tels que New Relic. New Relic, et d'autres solutions APM similaires, offrent une vue d'ensemble détaillée des performances des applications, permettant ainsi de surveiller leur comportement en temps réel et d'analyser les indicateurs clés.
Avec New Relic, vous pouvez suivre les requêtes utilisateur et visualiser la réponse de chaque composant système. Cet outil fournit des informations cruciales sur les performances du serveur, de la base de données et du code applicatif, en mettant en évidence les points à améliorer. Par exemple, New Relic peut aider à identifier les requêtes SQL lentes, les fonctions PHP inefficaces ou les composants tiers qui impactent négativement les temps de réponse.
Pour BuddyBoss, où chaque requête d'un utilisateur connecté doit être traitée dynamiquement, l'utilisation d'une solution APM est essentielle. New Relic permet d'identifier les requêtes de base de données à l'origine des ralentissements, de surveiller les appels AJAX et de déterminer quelles parties du code consomment le plus de ressources CPU et mémoire. Ces données permettent aux administrateurs système et aux développeurs de prendre des décisions éclairées pour optimiser le code, améliorer la configuration de la base de données et ajuster les ressources du serveur.
Un exemple concret serait la réduction du temps de chargement des pages de profil utilisateur dans BuddyBoss. Grâce au profilage avec New Relic, vous pourriez découvrir qu'une requête SQL particulière est trop longue à exécuter. Ces informations vous permettent d'optimiser la requête, d'ajouter des index pertinents ou de restructurer la base de données afin d'améliorer les performances.
De plus, New Relic vous permet de définir des alertes personnalisées qui vous avertissent immédiatement lorsque les performances de l'application se dégradent, permettant ainsi des interventions rapides pour résoudre les problèmes avant qu'ils n'aient un impact négatif sur l'expérience utilisateur. Cette proactivité est cruciale pour maintenir un haut niveau de satisfaction des utilisateurs sur une plateforme complexe comme BuddyBoss.
Les résultats obtenus après analyse et optimisation de l'installation de BuddyBoss
Il faut commencer par dire que ce n'est pas une pratique courante pour nous, ingénieurs système ayant des compétences en applications, de porter une application WordPress ou PHP vers un APM comme New Relic, cela équivaut à un mécanicien démontant méticuleusement tout le moteur puis le remontant dans une tentative. pour comprendre le problème et ensuite le résoudre. Il s'agit d'une tâche extrêmement coûteuse en termes de temps et de ressources, mais c'est la seule voie à suivre lorsque les optimisations classiques côté serveur sur du matériel puissant ne semblent pas apporter de résultats appréciables à l'installation du client.
Il faut bouger les mains mais c'est la seule voie possible, celle de mesurer pour décider, c'est-à-dire comprendre les goulots d'étranglement et l'origine du problème puis procéder à la résolution.
Nous pouvons observer sur la capture d'écran ci-dessus qu'au petit matin, la charge du serveur et le nombre de transactions étaient extrêmement élevés, avec des temps de réponse très lents. Les moyennes étaient d'environ 20 secondes, avec des pics dépassant 60 secondes, ce qui rendait le backend lent, voire inutilisable. Ce ralentissement a eu un impact négatif sur l'expérience utilisateur de l'administrateur, provoquant frustration et inefficacité.
Le traçage, comme le souligne l'image ci-dessous, a révélé que chaque appel admin-ajax prenait plus de 70 secondes. Compte tenu de la fréquence à laquelle ces appels sont effectués par les utilisateurs connectés, il en résulte une accumulation de charge importante, dégradant encore davantage les performances du système. Cela a entraîné une expérience utilisateur extrêmement mauvaise, avec des temps d’attente insoutenables.
La principale cause de ces problèmes était, du moins apparemment, le plugin « CRM Multistep Subscription », qui présentait des problèmes de performances évidents. Même si les défauts spécifiques n'étaient pas immédiatement évidents, il était clair que le plugin introduisait des fautes de frappe et des inefficacités qui devaient être corrigées. Notre analyse approfondie et notre intervention ciblée ont été essentielles pour identifier et résoudre ces problèmes, améliorant ainsi considérablement les performances du système.
Une analyse plus approfondie nous a permis de comprendre en quoi le problème sous-jacent était précisément une requête SQL non performante avec un temps d'exécution de plus de 50 secondes et imputable cette fois à Learndash qui a interrogé la Base de données pour récupérer les cours associés à chaque utilisateur.
Considérant que la requête était toujours la même et ne comportait pas de paramètres ou de variables spécifiques à l'utilisateur comme clauses, la solution la plus rapide et la plus efficace consistait à procéder ainsi qu'à ajouter des index aux tables MySQL (en particulier MariaDB 11.4), pour modifier le fichier incriminé. code d’application à l’aide d’un cache côté code.
Nous avons donc identifié le code incriminé que vous voyez ci-dessous :
et nous l'avons réécrit en ajoutant une fonctionnalité de mise en cache des requêtes au niveau du code PHP à l'aide de wp_cache_set() et wp_cache_get() de WordPress.
Pour intégrer un cache de requêtes dans votre fonction learndash_get_courses_count, nous pouvons utiliser l'API de cache WordPress. Cela nous permet de stocker les résultats des requêtes pendant une certaine période de temps, améliorant ainsi les performances.
wp_cache_set() est une fonctionnalité WordPress qui permet de mettre en cache une valeur. Il est utilisé en transmettant une clé unique, la valeur à stocker, un groupe facultatif pour organiser les données et un délai d'expiration facultatif. Cette fonction met en cache la valeur fournie avec la clé spécifiée.
wp_cache_get() est la fonction complémentaire qui permet de récupérer une valeur du cache. Il est utilisé en fournissant la clé unique et, éventuellement, le groupe auquel appartient la valeur. Vous pouvez forcer la récupération à partir du cache principal et vérifier si la valeur a été trouvée ou non. Cette fonction récupère la valeur associée à la clé spécifiée du cache.
Utiliser wp_cache_set() e wp_cache_get() dans WordPress de manière responsable et dans la mesure du possible, contribue à améliorer les performances du site en réduisant la charge sur la base de données et en accélérant les temps de réponse.
Concrètement, le code que nous avons modifié par rapport à celui d'origine qui prétendait faire une requête de 50 secondes à chaque fois, visait à stocker le résultat de la requête pendant 1 heure.
- Génération de clé de cache: Une clé unique est générée en fonction des arguments de la requête et du champ de retour.
- Récupération à partir du cache: tente de récupérer le résultat du cache à l'aide de la clé générée. Si le résultat est présent dans le cache, il est renvoyé immédiatement.
- Mise en cache: Si le résultat n'est pas dans le cache, la requête est exécutée et le résultat est mis en cache pendant 1 heure
De cette façon, les résultats des requêtes sont stockés et réutilisés, améliorant ainsi les performances globales.
Le résultat est que la requête lente a effectivement disparu. Si nous regardons la dernière fois que la requête lente est apparue dans le système d'analyse New Relic, nous voyons que la dernière fois qu'elle est apparue, c'était il y a 5 heures, juste avant le changement final.
De cette manière, comme dans un effet de chaîne, les appels admin-ajax.php ont commencé à s'exécuter correctement ainsi que la charge au niveau de l'application et du serveur avec un aplatissement des requêtes BD et des latences.
Les résultats obtenus se traduisent par une réduction de la charge CPU d'une Charge Moyenne de 30 à une Charge Moyenne de 4, avec une économie de plus de 600%, une augmentation de la réactivité du site pour les utilisateurs connectés, une moindre charge sur la base de données. , et une amélioration générale vraiment tangible à l'œil nu.












