OPcache: cosa fa e perché conviene in produzione
OPcache è il motore che conserva in memoria i file PHP già compilati, evitando di ricostruirli a ogni richiesta. In pratica riduce lavoro al processore, abbassa il tempo di risposta e rende più stabile il carico quando il traffico cresce. Su un sito WordPress, un CMS o una piattaforma custom, il guadagno si vede soprattutto su TTFB, CPU e numero di richieste gestibili senza rallentamenti.
Il punto non è “attivarlo e basta”, ma impostarlo in modo coerente con il tipo di applicazione, la RAM disponibile e il livello di cambiamento del codice. Un settaggio troppo aggressivo può creare cache inutilmente piccole o invalidazioni frequenti; uno troppo rilassato può consumare memoria senza beneficio reale. L’obiettivo pratico è avere una cache che resti calda, con pochi reset e un uso ordinato della memoria.
Settaggi pratici consigliati
Per ambienti produttivi comuni, il punto di partenza più sicuro è questo: OPcache attivo, memoria sufficiente, validazione file attiva e frequenza di controllo ragionevole. I valori esatti dipendono dal progetto, ma queste impostazioni sono una base solida da cui partire.
Valori di partenza consigliati
- opcache.enable=1: deve essere attivo per tutti gli utenti PHP in produzione.
- opcache.enable_cli=0: di norma meglio lasciare disattivato per evitare effetti indesiderati nei comandi CLI.
- opcache.memory_consumption=128 o 256: 128 MB per siti piccoli o medi, 256 MB se hai molte classi, plugin o codice custom.
- opcache.interned_strings_buffer=16: in molti casi è un buon compromesso.
- opcache.max_accelerated_files=10000 o 20000: utile per evitare saturazione della cache su installazioni grandi.
- opcache.validate_timestamps=1: consigliato in produzione se fai deploy frequenti.
- opcache.revalidate_freq=60: controlla i file ogni 60 secondi; è un buon equilibrio tra freschezza e prestazioni.
- opcache.save_comments=1: da mantenere attivo se usi framework o CMS che leggono annotazioni/commenti.
Se il sito è molto stabile e il deploy avviene in modo controllato, puoi valutare opcache.validate_timestamps=0, ma solo se hai un processo chiaro per svuotare la cache dopo ogni rilascio. È più veloce, ma richiede disciplina operativa.
Impostazioni spesso utili ma da valutare con attenzione
- opcache.jit: su PHP 8 può essere interessante in casi specifici, ma per molti siti web classici non porta benefici evidenti e può complicare il tuning.
- opcache.max_wasted_percentage=5: aiuta a controllare la frammentazione, ma non sostituisce una buona dimensione della cache.
- opcache.file_update_protection=2: protegge da file appena scritti, utile in ambienti con deploy automatici.
Dove configurarlo
Il percorso cambia in base al pannello o alla distribuzione. Su server Linux con PHP-FPM, spesso il file è in uno di questi percorsi:
/etc/php/8.x/fpm/php.ini/etc/php/8.x/cli/php.ini/etc/php.d/10-opcache.iniSu cPanel, Plesk o FastPanel conviene usare il gestore PHP del pannello, quando disponibile, perché riduce il rischio di modificare il file sbagliato. Su ambienti multi-versione è fondamentale verificare che il PHP del sito e quello che stai toccando siano la stessa cosa.
Prima di cambiare valori manualmente, salva sempre una copia del file. È il rollback più semplice e più veloce.
Configurazione consigliata di base
Una configurazione equilibrata per molte installazioni produttive può essere questa:
opcache.enable=1
opcache.enable_cli=0
opcache.memory_consumption=128
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=10000
opcache.validate_timestamps=1
opcache.revalidate_freq=60
opcache.save_comments=1
opcache.fast_shutdown=1Su installazioni più grandi, ad esempio WordPress multisite, e-commerce con molti plugin o applicazioni Laravel/Symfony, puoi aumentare la memoria a 256 MB e i file accelerati a 20000. Non farlo a caso: prima guarda l’uso reale della cache e poi decidi.
Come scegliere i valori giusti
La regola pratica è semplice: dimensiona la cache in base al numero di script e alla loro complessità, non solo in base alla RAM totale del server. Una VPS con 4 GB di RAM non significa che OPcache debba usare il massimo possibile; significa che devi bilanciare cache PHP, database, web server e sistema operativo.
Se vedi frequenti riempimenti della cache o molte ricompilazioni, aumenta memory_consumption e max_accelerated_files. Se invece la cache resta quasi vuota, probabilmente hai sovradimensionato e puoi ridurre i valori. L’obiettivo è stare in una zona di utilizzo stabile, non al limite.
Per un hosting condiviso o una VPS piccola, spesso basta 64-128 MB. Per applicazioni più pesanti, 128-256 MB è più realistico. Oltre questi valori ha senso solo se i numeri dell’osservabilità lo giustificano.
Verifica pratica dopo l’attivazione
Dopo aver abilitato o modificato OPcache, verifica sempre che sia davvero in uso. Il controllo più semplice è creare un file PHP con phpinfo() o usare la pagina di stato di OPcache, se già predisposta.
Controlla questi aspetti:
- OPcache risulta enabled.
- La memoria usata non è vicina al limite in modo costante.
- Il numero di file cached cresce in modo coerente con il sito.
- Le invalidazioni non sono eccessive.
- Non compaiono errori nei log PHP o del web server.
Se hai accesso a SSH, puoi anche verificare la versione PHP attiva e il caricamento del modulo. Su sistemi Debian/Ubuntu e derivati, il controllo utile è spesso questo:
php -vNel risultato devi vedere la presenza di OPcache tra i moduli caricati. Se non compare, stai modificando il PHP sbagliato oppure il modulo non è installato per quella specifica versione.
Monitoraggio: cosa guardare davvero
Quando OPcache è impostato bene, i segnali positivi sono concreti: CPU più bassa, TTFB più stabile, minor tempo speso in compilazione PHP e meno picchi sotto carico. Non fermarti al “sembra più veloce”: misura.
Le metriche più utili sono:
- CPU: deve scendere o diventare più stabile a parità di traffico.
- RAM: OPcache usa memoria fissa, quindi controlla che non sottragga troppo a database e web server.
- TTFB: se cala in modo visibile, la cache sta lavorando bene.
- Cache hit: più è alto, meglio è; se è basso, qualcosa invalida troppo spesso.
- Slow query: OPcache non risolve i problemi MySQL, ma può ridurre la pressione generale e rendere più leggibili gli altri colli di bottiglia.
Se il server ha già cache applicative o reverse proxy, OPcache è solo uno strato della catena. Non sostituisce Redis, page cache o una query ottimizzata, ma li completa bene.
Errori comuni da evitare
Il primo errore è disattivare i controlli sui timestamp senza un flusso di deploy affidabile. Se poi carichi file nuovi e la cache non viene svuotata, il sito può mostrare codice vecchio o comportamenti incoerenti.
Il secondo errore è usare una cache troppo piccola. In quel caso il server continua a ricompilare file e il vantaggio reale si riduce molto. Il terzo errore è confondere il tuning di OPcache con il tuning di PHP-FPM: se i processi FPM sono pochi o saturi, la cache non risolve il problema da sola.
Altro errore frequente: cambiare i parametri e non riavviare il servizio giusto. A seconda dell’ambiente, può servire il riavvio di PHP-FPM, Apache o entrambi. Se usi il pannello hosting, verifica che il reload sia avvenuto davvero.
Procedura sicura di applicazione
- Fai un backup del file di configurazione PHP o del file OPcache dedicato, così puoi tornare indietro in pochi secondi.
- Applica prima i valori base: memoria, file accelerati, timestamps e revalidate_freq.
- Riavvia solo il servizio necessario, non tutto il server, se non è richiesto.
- Verifica con una pagina PHP di test o con phpinfo che OPcache sia attivo.
- Controlla i log per 10-15 minuti dopo il cambio, soprattutto se il sito è in produzione.
Se noti rallentamenti improvvisi o errori anomali, torna immediatamente al backup precedente e ripristina la configurazione stabile. Una modifica conservativa è sempre preferibile a un guadagno teorico che mette a rischio il sito.
Rollback semplice e pulito
Il rollback migliore è il più banale: ripristino del file originale, riavvio del servizio PHP e nuova verifica. Tieni sempre una copia della configurazione precedente con data e ora, così sai esattamente cosa hai cambiato.
Se hai agito dal pannello, annota i valori originali prima di salvare. Se hai agito da terminale, conserva il file di backup nello stesso percorso o in una cartella dedicata ai salvataggi. In caso di emergenza, il tempo di recupero conta più di qualsiasi ottimizzazione marginale.
Conclusione operativa
OPcache è uno dei miglioramenti più semplici e più efficaci per PHP in produzione, ma rende davvero solo se configurato con criterio. La combinazione più affidabile, nella maggior parte dei casi, è: cache attiva, memoria adeguata, verifica timestamp attiva e monitoraggio dopo il deploy.
Se devi partire oggi, imposta una base prudente, misura l’effetto e aumenta i valori solo quando i numeri lo giustificano. È il modo più pulito per ottenere più velocità senza introdurre instabilità.
Regola pratica: prima stabilità, poi velocità. OPcache funziona meglio quando riduce il lavoro inutile, non quando maschera una configurazione sbilanciata.
Commenti (0)
Nessun commento ancora.
Segnala contenuto
Elimina commento
Eliminare definitivamente questo commento?
L'azione non si può annullare.