S√©parez votre backend lent du trafic frontal important avec PHP-FPM - ūüŹÜ Managed Server

BLOG

20 juin 2022

Séparez votre back-end lent du trafic frontal important avec PHP-FPM

Voyons quelques astuces pour créer deux files d'attente de processus PHP, une pour le frontend et une pour le backend.

Back-end Front-end

Si vous utilisez WordPress, WooCommerce, Magento, Shopware, Oxid, un CMS ou tout autre logiciel standard, le frontend et le backend utilisent généralement le même pool d'applications fpm. Même pour les applications auto-développées avec Symfony ou d'autres frameworks, c'est souvent le cas.

Le backend/administrateur peut donc inclure de nombreuses opérations lentes, des opérations administratives et des exports de données qui peuvent prendre beaucoup de temps. Cela pourrait encombrer la file d'attente de traitement des serveurs Web, réduisant ainsi le débit pour vos clients qui pourraient simplement cliquer sur le bouton de paiement et voir une erreur 502 Bad Gateway.

Mettre les frontends et les backends sur diff√©rents serveurs physiques est une solution, mais cela peut √™tre trop co√Ľteux pour la plupart des cas d'utilisation car nous doublons effectivement les co√Ľts pour les deux machines ou instances.

Séparation du pool PHP-FPM entre le frontend et le backend

Une solution simple à ce problème consiste à utiliser différents pools PHP-FPM pour le frontend et le backend, chacun avec sa propre configuration pour le nombre maximum de requêtes autorisées.

Par exemple, imaginez que vous êtes propriétaire d'un bar et que vous n'avez qu'une seule salle de bain utilisée à la fois par les clients et les employés. Des situations désagréables peuvent se produire, dans lesquelles le client doit attendre que l'employé ait fini pour utiliser la salle de bain, ou le cas d'une très grande file d'attente de personnes, peut-être lors d'une fête, et l'employé qui doit nécessairement faire la queue et attendre son tour.

Vous comprenez qu'une telle dynamique crée des désagréments et des problèmes importants tant pour l'employé que pour le client. En effet, de ce fait il est désormais courant de voir des établissements publics équipés de toilettes réservées aux clients et de toilettes réservées aux salariés afin de ne pas avoir à "mélanger" les files d'attente et les priorités associées.

Le même principe peut être utilisé au niveau du serveur lorsque l'on veut séparer la partie frontend de la partie backend.

Exemple d'administration et de frontend Magento

De quoi √ßa a l'air? Prenons Magento comme exemple, vous pouvez configurer deux pools dans php-fpm.conf:

; php-fpm.conf [frontend] listen = /var/run/php-fpm-frontend.sock pm = static pm.max_children = 50

[backend] listen = /var/run/php-fpm-backend.sock pm = ondemand pm.max_children = 5 pm.process_idle_timeout = 5 

Le frontend est configuré pour jusqu'à 50 requêtes simultanées et le backend pour jusqu'à 5 requêtes simultanées. Les travailleurs principaux sont créés à la demande et les travailleurs frontaux sont statiques pour éviter les frais généraux. Je discuterai des différences entre les configurations de pool PHP-FPM dans un futur article de blog.

Vous pouvez ensuite modifier la configuration de l'h√īte virtuel Nginx pour l'installation de Magento avec le commutateur suivant :

server {     // ....

    set $fpm_socket "unix:/var/run/php-fpm-frontend.sock";

    if ($uri ~* "^/admin/") {         set $fpm_socket "unix:/var/run/php-fpm-backend.sock";     }

    location ~ .php$ {         // ...

        fastcgi_pass $fpm_socket;     } } 

Bas√© sur ^/adminpath dans l'uri de la requ√™te, il s√©lectionnera d√©sormais les diff√©rents pools PHP FPM et le frontend et le backend ne seront plus en concurrence et ne voleront plus les ressources de l'autre.

Si à la place nous travaillions avec WordPress ou WooCommerce, le chemin serait ^ / wp-admin.

Ce qui compte, c'est évidemment le concept qui le sous-tend, à savoir la possibilité de créer des files d'attente séparées et basées sur des chemins.

 

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