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

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.
Retour en haut de page