20 Giugno 2022

Separa il tuo back-end lento dall’importante traffico front-end con PHP-FPM

Vediamo alcuni accorgimenti su come creare due code di processi PHP, uno per il frontend ed uno per il backend.

Backend Frontend
Print Friendly, PDF & Email

Se stai usando WordPress, WooCommerce, Magento, Shopware, Oxid, un CMS o qualsiasi altro software standard, di solito sia il frontend che il backend utilizzano lo stesso pool fpm applicativo. Anche per le applicazioni sviluppate autonomamente con Symfony o altri framework questo è spesso il caso.

Il back-end/amministratore può quindi includere numerose operazioni lente, operazioni amministrative ed esportazioni di dati che possono richiedere molto tempo. Ciò potrebbe congestionare la coda di elaborazione dei server web riducendo il throughput per i tuoi clienti che potrebbero semplicemente fare clic sul pulsante di pagamento e visualizzare un errore 502 Bad Gateway.

Mettere frontend e backend su server fisici diversi è una soluzione, ma può essere troppo costoso per la maggior parte dei casi d’uso visto che andremo di fatto a raddoppiare i costi per le due macchine o istanze.

Separazione Pool PHP-FPM tra frontend e backend

Una soluzione semplice per questo problema consiste nell’utilizzare diversi pool PHP-FPM per il frontend e il backend, ciascuno con la propria configurazione per il numero massimo di richieste consentite.

Immagina ad esempio di essere il proprietario di un bar ed avere un solo bagno utilizzato sia dai clienti che dai dipendenti. Si possono verificare situazioni spiacevoli, in cui il cliente deve aspettare che il dipendente finisca per poter usare il bagno, o il caso di una coda di persone molto grande, magari ad una festa, ed il dipendente che deve necessariamente mettersi in fila ed aspettare il suo turno.

Capite che una dinamica del genere crei dei disservizi non indifferenti e delle problematiche sia al dipendente che al cliente. Infatti, a causa di ciò è prassi comune ormai vedere dotati esercizi pubblici di bagni riservati ai clienti e bagni riservati ai dipendenti in modo da non dover “mischiare” le code di attesa e le relative priorità.

Lo stesso principio può essere usato a livello server quando vogliamo separare la parte frontend dalla parte backend.

Esempio di amministrazione e frontend Magento

Come appare? Usiamo Magento come esempio, puoi configurare due pool in 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 

Il frontend è configurato per un massimo di 50 richieste simultanee e il backend per un massimo di 5 richieste simultanee. I lavoratori di back-end vengono creati su richiesta e i lavoratori di front-end sono statici per evitare il fork overhead. Discuterò le differenze tra le configurazioni del pool PHP-FPM in un futuro post sul blog.

È quindi possibile modificare la configurazione di Nginx vhost per l’installazione di Magento con il seguente interruttore:

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;     } } 

In base al ^/adminpercorso nell’uri della richiesta, selezionerà ora il diverso pool FPM PHP e frontend e backend non competeranno più e si ruberanno le risorse a vicenda.

Se invece lavorassimo con WordPress o WooCommerce il percorso sarebbe ^/wp-admin.

Ciò che conta è ovviamente il concetto alla base, ovvero la possibilità di creare code separate e basate su path.

 

Hai dei dubbi? Non sai da dove partire? Contattaci


Abbiamo tutte le risposte alle tue domande per aiutarti nella giusta scelta.

Scrivici

Chatta direttamente con il nostro supporto tecnico.

0256569681

Chiamaci subito negli orari d’ufficio 9:30 – 19:30

Ricevi assistenza

Apri un ticket direttamente nell’area di supporto.

INFORMAZIONI

ManagedServer.it è il principale provider italiano di soluzioni hosting ad alte performance. Il nostro modello di sottoscrizione ha costi contenuti e prevedibili, affinché i clienti possano accedere alle nostre affidabili tecnologie di hosting, server dedicati e cloud. ManagedServer.it offre, inoltre, eccellenti servizi di supporto e consulenza su Hosting dei principali CMS Open Source come WordPress, WooCommerce, Drupal, Prestashop, Magento.

Comunicato : La nostra azienda è da Giugno 100% Italiana Scopri di più
+ +

SOLO UN ATTIMO !

Vorresti vedere come gira il tuo WooCommerce sui nostri sistemi senza dover migrare nulla ? 

Inserisci l'indirizzo del tuo sito WooCommerce e otterrai una dimostrazione navigabile, senza dover fare assolutamente nulla e completamente gratis.

No grazie, i miei clienti preferiscono il sito lento.
Torna su