PHP worker

I PHP worker elaborano il codice PHP di un sito. Questo include la creazione di pagine, l’elaborazione di attività in background, l’interrogazione del database, ecc.

Un modo per pensare ai PHP worker è paragonarli ai dipendenti di un negozio. Ogni worker può gestire una sola richiesta alla volta. Se ci sono più clienti che “lavoratori”, i clienti (processi) devono mettersi in fila e aspettare che il prossimo worker disponibile gestisca la loro richiesta.

I PHP worker entrano in gioco quando un sito non ha o non può avere in cache la maggior parte dei suoi contenuti. Più un sito web è dinamico, più è probabile che abbia bisogno di PHP worker. I contenuti in cache non richiedono PHP worker; sono necessari solo quando il sito deve interrogare il database per ottenere o modificare informazioni.

Quando si parla di prestazioni di WordPress, un maggior numero di PHP worker non significa automaticamente prestazioni migliori; ci sono una serie di fattori da considerare:

  • Cache: Una cache efficace può ridurre il carico di lavoro dei worker PHP, servendo i contenuti nella cache invece di generarli dinamicamente per ogni richiesta. Questo può migliorare significativamente le prestazioni, soprattutto per le risorse a cui si accede di frequente.
  • Hardware: Le risorse hardware disponibili sul server, come CPU, memoria (RAM) e velocità del disco, hanno un impatto diretto sulle prestazioni del PHP worker. Risorse insufficienti possono portare a tempi di elaborazione più lenti e a prestazioni degradate.
  • Configurazione del server web: La configurazione del server web e la sua interazione con PHP possono influenzare le prestazioni del worker.
  • Velocità del database: Le applicazioni PHP recuperano spesso i dati dai database MySQL per rendere il contenuto dinamico. La velocità di recupero dei dati è influenzata da fattori quali l’organizzazione del database, l’ottimizzazione delle query e le prestazioni del server del database. Questo ha un impatto diretto sull’esecuzione delle applicazioni PHP.
  • VersionPHP: Le nuove versioni di PHP possono spesso migliorare le prestazioni del PHP worker grazie a miglioramenti delle prestazioni, correzioni di bug e aggiornamenti di sicurezza.

Noi di Kinsta teniamo in grande considerazione l’importanza delle prestazioni del tuo sito. Per questo motivo abbiamo implementato diverse tecnologie volte a massimizzare le prestazioni PHP e a ridurre al minimo le richieste PHP:

  • Offriamo il caching della pagina sia a livello di CDN che di server, con regole personalizzabili per garantire la massima efficienza della cache.
  • Utilizziamo server premium su GCP (macchine virtuali C2 e C3D) dotati delle CPU più veloci di Google Cloud per aiutare i PHP worker del tuo sito a funzionare in modo più efficiente.
  • La nostra infrastruttura scalabile garantisce che i PHP worker del tuo sito WordPress dispongano di risorse CPU sufficienti per operare al massimo delle prestazioni.
  • Utilizziamo un’infrastruttura di rete premium presso Google Cloud Platform (GCP) per ridurre al minimo la latenza. Sfruttando la rete premium di GCP, riduciamo significativamente il tempo necessario ai dati per viaggiare tra i diversi componenti della nostra infrastruttura, compresi il server MySQL e i server web.
  • Forniamo un server MySQL altamente ottimizzato ospitato localmente per ridurre la latenza di rete e migliorare la velocità di recupero ed elaborazione dei dati.
  • Sul server MySQL, i buffer InnoDB contribuiscono a migliorare le prestazioni del database riducendo le operazioni di I/O su disco. I dati possono essere consultati più rapidamente dalla memoria anziché dal disco, aumentando l’efficienza delle operazioni di lettura e scrittura e migliorando le prestazioni complessive del database MySQL.
  • Ci assicuriamo che sia sempre disponibile l’ultima versione di PHP per incorporare qualsiasi miglioramento delle prestazioni.

WordPress e i PHP Worker

Una richiesta non memorizzata nella cache su un sito WordPress di solito si svolge in questo modo:

  1. Un visitatore visita una pagina o esegue un’azione su una pagina (ad esempio, aggiunge qualcosa al carrello, invia un modulo, ecc.)
  2. Il server web (Nginx in Kinsta) riceve la richiesta.
  3. Nginx passa la richiesta a PHP.
  4. PHP interroga il database MySQL e ottiene le informazioni di cui ha bisogno o effettua gli aggiornamenti necessari.
  5. Il PHP utilizza quindi i file PHP del tema (e gli eventuali file dei plugin) per generare una pagina HTML.
  6. PHP restituisce la pagina HTML renderizzata al server web.
  7. La pagina viene servita al visitatore.

Nel processo descritto sopra, la fase 4 è quella che richiede più tempo e risorse (CPU e RAM). Un sito ben ottimizzato, con un codice PHP e delle query al database efficienti, riuscirà a eseguire questa fase abbastanza velocemente.

D’altro canto, un codice PHP scritto male o non ottimizzato e/o con molte query al database inefficienti impiegherà molto più tempo per superare il passaggio 4. Le richieste che impiegano più tempo per essere elaborate monopolizzano i PHP worker per periodi di tempo più lunghi.

Stimare il numero di PHP worker necessari

Il numero di worker di cui un sito ha bisogno dipende da diversi fattori, come ad esempio: la dinamicità del sito, l’ottimizzazione del codice del sito (la velocità con cui le richieste possono essere processate) e il tipo di traffico che il sito riceve. Un sito ottimizzato gestisce le richieste in modo rapido, liberando PHP worker per la richiesta successiva in coda.

I siti dinamici come i negozi di e-commerce, i forum, i siti di apprendimento e i siti di membership necessitano di un maggior numero di PHP worker rispetto ai siti statici e di tipo brochure. Inoltre, più un sito è trafficato, più saranno i PHP worker di cui avrà bisogno.

Piani Kinsta e PHP Workers

La tabella seguente mostra quanti PHP worker sono inclusi in ciascun piano di Kinsta:

Piano PHP worker
Starter 2 PHP worker
Pro 2 PHP worker/sito
Business 1 4 PHP worker/sito
Business 2 4 PHP worker/sito
Business 3 6 PHP worker/sito
Business 4 6 PHP worker/sito
Enterprise A partire da 8 PHP worker/sito
Piano Sito Singolo 6 PHP worker
Piano Agenzia 6 PHP worker/sito

Offriamo anche piani personalizzati in cui è possibile indicare il numero di PHP worker di cui si ha bisogno. Per maggiori informazioni, contatta il nostro team delle vendite.

PHP worker, CPU e RAM

Quando si aggiungono PHP worker, bisogna tenere conto delle risorse CPU e RAM. Se si aumentano i PHP worker, ma il server ha bisogno di più CPU e RAM per supportare tali worker, si creerà un collo di bottiglia perché le richieste non saranno gestite in modo efficiente.

In Kinsta, i nostri container LXD personalizzati sono configurati con risorse CPU e RAM sufficienti. Inoltre, utilizzando macchine virtuali C2 e C3D ottimizzate per il calcolo e dotate delle CPU più veloci di Google Cloud, aiutiamo i PHP worker del vostro sito a funzionare in modo più efficiente. La nostra infrastruttura scalabile garantisce che i PHP worker del vostro sito WordPress abbiano risorse CPU sufficienti per operare al massimo delle prestazioni.

Identificare i problemi di prestazioni legati ai PHP Worker

Se troppe richieste si accumulano nella coda a causa di un grande afflusso di richieste, di processi a lungo termine o di una combinazione di entrambi, il sito può avere problemi di prestazioni che possono causare errori 502 o 504.

L’utilizzo di strumenti come l’APM di Kinsta e il plugin Query Monitor può aiutarvi a identificare i problemi di performance e le query lente. Vi consigliamo anche di rivolgervi a un esperto di prestazioni qualificato per diagnosticare i problemi.

Basta cliccare sul pulsante Abilita APM per attivarlo in MyKinsta.
Basta cliccare sul pulsante Abilita APM per attivarlo in MyKinsta.

Limite dei worker PHP

È possibile accedere al grafico limite dei worker PHP in MyKinsta > Siti WordPress > nome sito > Statistiche > Prestazioni > Limite worker PHP. Se un worker PHP non ha nulla da fare per 10 secondi continui, il processo worker PHP terminerà automaticamente. Non appena sarà necessario, il processo worker verrà ricreato istantaneamente. Questo grafico mostra quante volte è stato raggiunto il numero massimo di worker allocati sul sito.

Ad esempio, se si dispone di un piano Business 1, questo consente un massimo di 4 processi PHP worker. Se sono in uso 3 PHP worker e viene fatta un’altra richiesta al sito che richiede un PHP worker, quando il PHP worker viene creato, raggiunge il numero massimo di 4 PHP worker e viene registrato come un incidente in cui viene raggiunto il limite di PHP worker.

Questo può fornire solo un quadro parziale dell’attività dei PHP worker, poiché registra solo il numero di volte in cui viene raggiunto il limite dei PHP worker e non il tempo in cui tutti i PHP worker sono stati utilizzati.

Ad esempio, se il sito subisce un’impennata di traffico, tutti i worker PHP potrebbero rimanere costantemente occupati per un’ora intera senza tempi morti e, quindi, non terminare affatto durante quell’ora. In questo caso, si registrerebbe solo un caso di raggiungimento del limite di worker PHP e quindi potrebbe sembrare che i worker PHP non siano stati occupati durante quell’ora, mentre in realtà sono stati tutti attivi per tutto il tempo. Dopo 30 minuti, se si verifica una diminuzione del traffico che consente a un worker PHP di rimanere inattivo per 10 secondi, questo verrà automaticamente terminato. Tuttavia, se il PHP worker è nuovamente necessario in un altro minuto, il numero massimo di PHP worker sarà nuovamente raggiunto, con conseguente registrazione di un altro limite di PHP worker.

Se si stanno analizzando le prestazioni di un sito web e si vuole determinare se il sito sta consumando continuamente i suoi worker PHP, è possibile monitorare l’attività dei worker PHP utilizzando gli strumenti in una sessione SSH. Ad esempio, il seguente comando personalizzato monitora il numero di PHP worker attivi ogni 0,3 secondi:

watch -n 0.3 “ps aux | awk ‘\$(NF-2) ~ /php-fpm/ && \$(NF-1) ~ /pool/ && \$8 ~ /R/ { print \$0 }’ | wc -l"

Per uscire da questo comando, premere CMD + C o CTRL + C e rilasciare entrambi i tasti.

Limite di PHP worker
Limite di PHP worker

Analisi della cache

La sezione statistiche della cache di MyKinsta può essere utilizzata per visualizzare il totale delle richieste in cache del vostro sito e i principali bypass della cache.

Cache - grafico dei componenti della cache
Cache – grafico dei componenti della cache
Cache - Principali bypass della cache
Cache – Principali bypass della cache

Ridurre e ottimizzare l’uso dei PHP worker

La cache

La cache è la vostra migliore amica quando si tratta di ottimizzare il sito e ridurre il numero di PHP worker necessari. Ricordate che i PHP worker non sono necessari per i contenuti in cache, quindi mettete in cache tutto ciò che potete.

Caching delle pagine

Noi di Kinsta ci occupiamo della cache delle pagine; tutti i siti utilizzano il modulo di cache FastCGI di Nginx per ottenere prestazioni velocissime.

Cache degli oggetti

L’aggiunta di una cache persistente di oggetti come Redis davanti al vostro database può aumentare le prestazioni e ridurre la necessità di PHP worker. Senza la cache degli oggetti, le query del database MySQL vengono eseguite per ogni richiesta, anche quando si tratta della stessa query e degli stessi risultati.

Redis memorizza i risultati delle interrogazioni al database nella RAM, in modo che PHP possa prenderli senza dover eseguire nuovamente la query. Eliminando la necessità di eseguire query ripetitive al database, i PHP worker possono risparmiare risorse e soddisfare le richieste in modo più efficiente.

Date un’occhiata ai nostri add-on premium per saperne di più sull’aggiunta della cache Redis al vostro sito.

Ottimizzazione del codice

Assicuratevi che il codice del vostro sito sia ottimizzato in modo da essere il più efficiente possibile. Questo vale per il codice personalizzato, il codice del tema e il codice dei plugin. Se non siete sicuri, vi consigliamo di chiedere a uno sviluppatore di rivedere il codice del sito.

Codice personalizzato

Se il vostro sito web contiene frammenti di codice personalizzato nei plugin o nel tema, assicuratevi che siano davvero necessari e ben scritti.

I plugin

Date un’occhiata ai plugin utilizzati nel sito e assicuratevi che siano veramente necessari, che non duplichino le funzioni e che siano l’opzione migliore per le esigenze che soddisfano. Se qualche plugin non è compatibile con l’ultima versione di WordPress e PHP, potrebbe essere il momento di prendere in considerazione altre opzioni. Se sul vostro sito ci sono dei plugin che non vengono utilizzati, è consigliabile rimuoverli.

Tema

Usate un tema leggero e performante. Evitate i temi che contengono funzionalità che è meglio implementare tramite plugin separati (ad es. SEO, filtri di ricerca, campi personalizzati, slider/slideshow di immagini, ecc.

Aggiorna PHP

Usate l’ultima versione di PHP per ottenere prestazioni più veloci. I benchmark PHP mostrano che ogni versione PHP è più veloce della precedente.

Abilitare il CDN di Kinsta

L’attivazione del CDN di Kinsta offre un’ulteriore spinta all’efficienza e all’ottimizzazione del vostro sito. Il CDN di Kinsta è il nostro CDN HTTP/3 ad alte prestazioni alimentato da Cloudflare, che viene fornito senza costi aggiuntivi. Grazie a questa funzione, il vostro sito sarà in grado di servire risorse statiche da tutto il mondo.

Consultare un esperto di prestazioni

Se avete familiarità con l’ottimizzazione del sito, questo è un passo facoltativo. Un esperto può aiutarvi ad analizzare tutti gli aspetti del vostro sito, identificare i colli di bottiglia e implementare le soluzioni.

Riavviare PHP

Noi di Kinsta abbiamo una fantastica funzione che chiamiamo “self-healing PHP“. Questa funzione è utile se capita di ricevere un errore 502 o se qualcosa va storto. Se PHP si blocca per qualsiasi motivo, il nostro sistema cerca automaticamente di riavviarlo. In molti casi è sufficiente questo e il gioco è fatto!

In rare occasioni, il problema potrebbe essere più grave. Il nostro sistema registra automaticamente il problema per consentire al nostro team di amministrazione dei sistemi (sysadmin) di verificarlo. In caso contrario, potete comunque riavviare PHP per ogni vostro sito web individualmente con un semplice click da MyKinsta.

Come riavviare PHP manualmente

Per riavviare PHP sul vostro sito WordPress, seguite questi passaggi:

  1. Accedete a MyKinsta.
  2. Andate su Siti WordPress e selezionate il sito su cui desiderate riavviare il PHP.
  3. Andate alla scheda Strumenti e individuate la sezione Riavvia PHP.
  4. Cliccate sul pulsante Riavvia PHP.
Riavviare PHP in MyKinsta.
Riavviare PHP in MyKinsta.

Il riavvio di PHP richiederà circa 5-10 secondi. Riceverete una notifica in fondo allo schermo al termine dell’operazione.

Nota: dovrete anche cancellare la cache del vostro sito per vedere le modifiche.

Limiti PHP di Kinsta

In qualità di servizio WordPress gestito, abbiamo configurato le impostazioni PHP ottimali per lavorare al meglio con i siti WordPress. Se avete esigenze specifiche in termini di PHP, non esitate a contattare il nostro team di supporto per discutere delle vostre necessità.

Kinsta offre PHP 8.0, 8.1, 8.2 and 8.3. Queste sono le impostazioni predefinite per PHP:

  • memory_limit = 256M
  • post_max_size = 128M
  • upload_max_filesize = 128M
  • max_input_vars = 10000
  • max_execution_time = 300

A seconda del piano WordPress, potreste aumentare questi valori se necessario. Contattate il nostro team di supporto per conoscere le opzioni disponibili.

Limite di memoria PHP di Kinsta

Il limite di memoria PHP predefinito di Kinsta è di 256 MB, più che sufficiente per la maggior parte dei plugin e dei siti WordPress. Questo limite esiste per evitare che gli script PHP consumino troppa memoria. Se si imposta un limite troppo alto, uno script mal configurato o non funzionante può causare seri problemi consumando troppa memoria.

Se il vostro sito è configurato correttamente su Kinsta, non dovreste incorrere in un errore di limite di memoria. Se invece vedete questo errore, vi consigliamo di controllare le impostazioni di WordPress per assicurarvi che non sia stato accidentalmente impostato troppo basso.

Se avete un piano Business di Kinsta e volete aumentare il limite di memoria PHP di un sito, potete acquistare un add-on per il limite di memoria PHP. Il componente aggiuntivo per il limite di memoria PHP aumenta il limite di memoria da 256MB a 512MB al costo di $50 per sito al mese. Per acquistare questo componente aggiuntivo, contattate il team Account Management tramite la chat live nel cruscotto di MyKinsta o scriveteci un’e-mail all’indirizzo [email protected]. L’add-on è attualmente disponibile solo per i clienti con piano Business; se avete un piano Starter o Pro, dovrete passare a un piano Business per acquistarlo.

Controllare e modificare il limite di memoria PHP

Per verificare l’attuale limite di memoria PHP per WordPress, accedete alla bacheca di WordPress del vostro sito e andate su Strumenti > Salute del sito.

Andate alla scheda Info e cliccate sull’icona della freccia accanto alla sezione Server per espandere questa sezione e visualizzare il limite di memoria PHP.

Se il limite di memoria è inferiore a 256M, controllate il file wp-config.php per verificare se WP_MEMORY_LIMIT è stato modificato e, se necessario, regolatelo.

Se il limite di memoria è di 256M, ma avete problemi con la memoria PHP, vi consigliamo di controllare e testare plugin e temi. Potete utilizzare un ambiente di staging per disattivare e riattivare in modo sicuro i plugin e i temi per identificare la fonte dell’utilizzo della memoria.

Se l’errore persiste e non riuscite a identificarne l’origine, potete aprire una nuova chat con il nostro team di supporto per controllare i log ed escludere eventuali problemi sul lato server.

Aggiornare PHP

Abbiamo reso l’aggiornamento della versione PHP del vostro sito il più semplice possibile in MyKinsta.

Se il vostro sito è pronto per l’aggiornamento PHP, accedete a MyKinsta e andate su Siti WordPress > nome del sito > Strumenti.

Alla voce Motore PHP, cliccate sul menu a tendina e selezionate la versione PHP a cui volete aggiornare il vostro sito.

Pulsante per cambiare il motore PHP in MyKinsta.
Pulsante per cambiare il motore PHP in MyKinsta.

Nella finestra modale/pop-up che appare, cliccate sul pulsante Modifica versione PHP per confermare la modifica.

Modificare la versione PHP.
Modificare la versione PHP.

Al termine dell’aggiornamento, il motore PHP verrà riavviato e il backend (la bacheca di WordPress) del vostro sito potrebbe essere inattivo per un paio di secondi. Il frontend del sito rimarrà attiva e i visitatori non subiranno alcun downtime.

Mentre il processo di aggiornamento è in corso, potete navigare in altre parti di MyKinsta, ma alcune azioni, come la gestione della cache, non saranno disponibili fino al riavvio del motore PHP.

Una volta completato l’aggiornamento (di solito entro 3 minuti o meno), riceverete una notifica in MyKinsta che vi avviserà della sua conclusione.

Moduli PHP

I seguenti moduli PHP sono installati di default sul vostro sito WordPress su Kinsta:

  • bcmath
  • bz2
  • calendar
  • Core
  • ctype
  • curl
  • date
  • dom
  • exif
  • FFI
  • fileinfo
  • filter
  • ftp
  • gd
  • gettext
  • hash
  • iconv
  • igbinary
  • imagick
  • imap
  • intl
  • json
  • libxml
  • mbstring
  • mysqli
  • mysqlnd
  • openssl
  • pcntl
  • pcre
  • PDO
  • pdo_mysql
  • Phar
  • posix
  • readline
  • redis
  • Reflection
  • session
  • shmop
  • SimpleXML
  • soap
  • sockets
  • sodium
  • SPL
  • standard
  • sysvmsg
  • sysvsem
  • sysvshm
  • tokenizer
  • xml
  • xmlreader
  • xmlwriter
  • xsl
  • Zend OPcache
  • zip zlib

ionCube non è installato per impostazione predefinita, ma può essere abilitato se il vostro sito utilizza PHP 8.1 all’interno di MyKinsta > Siti WordPress > nome del sito > Strumenti > ionCube Loader > Abilita.

Se avete domande su un modulo PHP specifico non incluso nell’elenco precedente, contattate il team di supporto di Kinsta.