Ottimizzare la Configurazione PHP e PHP-FPM per il Tuo Sito Web

Scritto il 12/06/2024
da Gianluca Gentile

Configurare correttamente PHP e PHP-FPM è essenziale per garantire che il tuo sito web funzioni in modo efficiente e stabile. Di seguito, analizzeremo le impostazioni suggerite, spiegando ogni parametro e fornendo consigli su come ottimizzare la tua configurazione in base alle visite e al consumo del sito web.

Configurazioni PHP

memory_limit: 2048M

Funzione: Il parametro memory_limit definisce la quantità massima di memoria che uno script PHP può utilizzare. Se uno script supera questo limite, verrà terminato.

Consiglio:

  • Per siti a basso traffico: Un valore di 128M-512M è generalmente sufficiente.
  • Per siti a medio-alto traffico con contenuti complessi: Un valore di 1024M-2048M può essere necessario.
  • Verifica: Assicurati che il server abbia abbastanza memoria fisica per supportare questa impostazione. Utilizza strumenti di monitoraggio per controllare l’utilizzo della memoria e adegua il valore se necessario.

max_execution_time: 512

Funzione: Il parametro max_execution_time determina il tempo massimo in secondi durante il quale uno script può essere in esecuzione prima di essere terminato. Questo evita che script malfunzionanti consumino risorse indefinitamente.

Consiglio:

  • Per siti a basso traffico: Un valore di 30-60 secondi è spesso sufficiente.
  • Per siti a medio-alto traffico: Un valore di 60-120 secondi può essere adeguato.
  • Per script complessi: Se i tuoi script richiedono più tempo (ad esempio, per elaborazioni intensive), puoi aumentare il valore, ma cerca di ottimizzare il codice per ridurre i tempi di esecuzione.

max_input_time: 512

Funzione: Il parametro max_input_time specifica il tempo massimo in secondi durante il quale uno script può analizzare dati di input (ad esempio, dati di moduli o file caricati).

Consiglio:

  • Per siti a basso traffico: Un valore di 30-60 secondi è adeguato.
  • Per siti a medio-alto traffico: Un valore di 60-120 secondi è consigliato.
  • Monitoraggio: Se i tuoi script analizzano grandi quantità di dati, verifica il tempo necessario e adegua il valore di conseguenza.

post_max_size: 128M

Funzione: Il parametro post_max_size definisce la dimensione massima dei dati che possono essere inclusi in una richiesta POST.

Consiglio:

  • Per siti con piccoli upload: Un valore di 8M-32M è sufficiente.
  • Per siti con upload medi: Un valore di 32M-64M è adeguato.
  • Per siti con grandi upload: 128M o più, assicurandoti che upload_max_filesize sia inferiore a post_max_size.

upload_max_filesize: 256M

Funzione: Il parametro upload_max_filesize definisce la dimensione massima di un file caricato.

Consiglio:

  • Per siti con piccoli file: Un valore di 2M-16M è sufficiente.
  • Per siti con file medi: Un valore di 16M-64M è adeguato.
  • Per siti con grandi file: 256M o più, assicurati che il valore di post_max_size sia maggiore di upload_max_filesize.

opcache.enable: on

Funzione: Abilita la cache opcode per migliorare le prestazioni della tua applicazione PHP.

Consiglio: Mantieni questa impostazione abilitata per migliorare le prestazioni. Assicurati di configurare correttamente altre impostazioni opcache per massimizzare i benefici.

disable_functions: opcache_get_status

Funzione: Disabilita determinate funzioni PHP per motivi di sicurezza.

Consiglio: Disabilita solo le funzioni che non sono necessarie per il tuo sito per aumentare la sicurezza.

Impostazioni Comuni di PHP

include_path

Funzione: La lista di directory in cui gli script PHP cercano file inclusi o richiesti.

Consiglio: Mantieni il percorso predefinito a meno che non ci sia un motivo specifico per modificarlo. Aggiungi percorsi solo se necessari per il funzionamento del tuo sito.

session.save_path

Funzione: La directory in cui i file di sessione PHP sono archiviati.

Consiglio: La directory predefinita è generalmente adeguata, ma assicurati che abbia le autorizzazioni appropriate per leggere e scrivere. Se il tuo sito utilizza sessioni pesantemente, considera l’utilizzo di una soluzione di memorizzazione delle sessioni più performante come Redis o Memcached.

error_reporting: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED

Funzione: Il livello di segnalazione degli errori PHP.

Consiglio: Mantieni questa configurazione per l’ambiente di produzione per evitare che messaggi di errore non critici vengano visualizzati agli utenti finali.

display_errors: off

Funzione: Determina se gli errori PHP devono essere mostrati come parte dell’output.

Consiglio: Mantieni questa impostazione disabilitata in produzione per motivi di sicurezza. Abilitala solo in un ambiente di sviluppo.

log_errors: on

Funzione: Abilita l’accesso agli errori PHP, registrandoli in un file di log.

Consiglio: Mantieni questa impostazione abilitata per poter risolvere eventuali problemi. Verifica periodicamente i log degli errori per identificare e correggere eventuali bug.

Impostazioni PHP-FPM

pm.max_children: 12

Funzione: Il numero massimo di processi figli che PHP-FPM può creare.

Consiglio:

  • Per siti a basso traffico: 5-10 processi sono sufficienti.
  • Per siti a medio-alto traffico: 10-20 processi possono essere necessari.
  • Monitoraggio: Monitora l’utilizzo della memoria e del CPU per determinare il numero ottimale di processi.

pm.start_servers: 2

Funzione: Il numero di processi server all’avvio.

Consiglio:

  • Per siti a basso traffico: 1-2 processi sono adeguati.
  • Per siti a medio-alto traffico: 2-4 processi all’avvio.
  • Monitoraggio: Verifica il tempo di avvio del server e adegua il valore se necessario.

pm.min_spare_servers: 2

Funzione: Il numero minimo di processi server inattivi.

Consiglio:

  • Per siti a basso traffico: 1-2 processi sono adeguati.
  • Per siti a medio-alto traffico: 2-4 processi inattivi.
  • Monitoraggio: Mantieni un numero di processi inattivi sufficiente per rispondere rapidamente a nuovi utenti.

pm.max_spare_servers: 4

Funzione: Il numero massimo di processi server inattivi.

Consiglio:

  • Per siti a basso traffico: 2-4 processi sono adeguati.
  • Per siti a medio-alto traffico: 4-6 processi inattivi.
  • Monitoraggio: Regola in base al carico per evitare sprechi di risorse.

pm.max_requests: 500

Funzione: Il numero massimo di richieste che ogni processo figlio può eseguire prima di essere riciclato.

Consiglio:

  • Per siti a basso traffico: 200-500 richieste possono essere sufficienti.
  • Per siti a medio-alto traffico: 500-1000 richieste sono più adatte.
  • Monitoraggio: Controlla il comportamento dei processi e regola il valore per prevenire perdite di memoria e garantire la stabilità.

pm: dynamic

Funzione: Determina il comportamento della gestione dei processi figli.

Consiglio: Mantieni dynamic per una gestione flessibile dei processi figli in base al carico del server. In alcuni casi, ondemand può essere utile per risparmiare risorse in periodi di basso traffico.

Suggerimenti Aggiuntivi

Monitoraggio delle risorse

Utilizza strumenti di monitoraggio come New Relic o strumenti di monitoraggio del server per tenere d’occhio l’utilizzo della memoria e del CPU.

  • Consiglio: Monitora il server regolarmente per rilevare e risolvere rapidamente eventuali problemi di prestazioni.

Caching

Implementa un sistema di caching lato server (ad esempio, Varnish) e/o caching lato applicazione per ridurre il carico sul server.

  • Consiglio: Un buon sistema di caching può migliorare notevolmente le prestazioni del sito.

Aggiornamenti regolari

Assicurati che tutte le componenti del server e le librerie utilizzate siano aggiornate per beneficiare di miglioramenti delle prestazioni e correzioni di sicurezza.

  • Consiglio: Mantieni il tuo software aggiornato per evitare vulnerabilità di sicurezza e problemi di compatibilità.

Utilizzando queste configurazioni e suggerimenti, dovresti essere in grado di gestire efficacemente la memoria PHP-FPM e migliorare le prestazioni del tuo sito web.