Categoria

Pagina 1 di 2

Performance: prestazioni misurate, non percepite a sensazione

Ottimizzare senza misurare è tirare a indovinare. Prima di toccare una riga, la domanda giusta è sempre la stessa: dove sta davvero il collo di bottiglia? Quasi mai è dove il team pensa che sia, e quasi sempre è molto più economico da risolvere di un rewrite o di un server più grande. In questa categoria la performance è un metodo, non una collezione di trucchi.

Il primo tema è la performance applicativa, che quasi sempre significa accesso ai dati: query lente ed Eloquent N+1, caching a più livelli con Redis usato dove serve, code e worker per togliere il lavoro pesante dal percorso della richiesta, e le leve del runtime come OPcache, PHP-FPM e i fibers. Il denominatore comune è misurare il traffico reale, trovare il vero punto lento e intervenire lì, non ovunque.

Il secondo tema è la performance di sistema, spesso ignorata finché non esplode: RAM e swap su VPS modesti, cron che si pestano i piedi a vicenda, spazio disco che si satura e ferma il servizio, sessioni PHP che affondano un portale nelle ore di punta. Sono i problemi che non si vedono nel codice ma fermano l'azienda, e si risolvono con diagnosi, non con l'acquisto d'impulso di hardware.

Se un'applicazione o un server rallentano, vedi la consulenza IT e DevOps o scrivimi.

La prima regola dell'ottimizzazione è misurare. La seconda è misurare di nuovo dopo aver cambiato qualcosa.

Benchmarking Qwen3.6-35B-A3B on a 16GB RTX 5060 Ti: A Full Engineering Teardown

Benchmarking Qwen3.6-35B-A3B on a 16GB RTX 5060 Ti: A Full Engineering Teardown The engineering companion to the strategic piece on local inference, deliberately exhaustive. llama.cpp build flags for Blackwell, VRAM accounting to the MiB, context ceilings per quantization, prefill and decode throughput with and without MTP, a roofline analysis of why speculative decoding helps this MoE, a 200-call agentic tool-calling harness, and an autopsy of a KV-cache compression technique that crashed with its CUDA stack trace. Every figure measured on one fixed rig. Continua a leggere
Ultima modifica:

Header Expires per file htaccess

Header Expires per file htaccess Configurare il caching del browser via .htaccess è ancora una leva di performance reale, ma la ricetta "ExpiresByType, un mese per immagini, CSS e JS" che gira da anni oggi fa più danni che bene: ti serve un utente con il CSS vecchio per un mese dopo ogni deploy. La verità è che il problema non si risolve con la durata della cache, ma con il nome dei file. Vediamo perché Cache-Control ha superato Expires e come si scrive una configurazione di caching insieme aggressiva e sicura. Continua a leggere
Ultima modifica:

Caching multi-livello in Laravel: strategie per applicazioni ad alto traffico

Caching multi-livello in Laravel: strategie per applicazioni ad alto traffico Un portale di notizie Laravel con 50.000 utenti al giorno mandava in ginocchio il database MySQL ogni volta che arrivava un articolo virale. Ho implementato tre livelli di cache: in-process (array driver), Redis per i dati di business, Nginx proxy cache per le risposte HTTP. Il database ora riceve il 3% delle richieste originali. Continua a leggere
Ultima modifica:

Ottimizzare le build Docker per applicazioni PHP: layer caching e immagini minimali

Ottimizzare le build Docker per applicazioni PHP: layer caching e immagini minimali La build Docker di un'applicazione Laravel richiedeva 8 minuti ogni volta. Con l'ottimizzazione del layer caching (dipendenze Composer separate dal codice applicativo), multi-stage build e l'immagine finale Alpine, siamo scesi a 90 secondi. Il CI è diventato abbastanza veloce da aspettare il feedback. Continua a leggere
Ultima modifica:

CQRS in PHP: separare letture e scritture per applicazioni Laravel ad alto carico

CQRS in PHP: separare letture e scritture per applicazioni Laravel ad alto carico Un'applicazione di reportistica con 50 query analitiche complesse che rallentavano le operazioni transazionali. Con CQRS ho separato i modelli di lettura da quelli di scrittura: le query analitiche usano read model denormalizzati aggiornati asincronamente, le operazioni transazionali volano sul modello normalizzato. Continua a leggere
Ultima modifica:

Database sharding in MySQL per applicazioni Laravel con milioni di record

Database sharding in MySQL per applicazioni Laravel con milioni di record Una piattaforma SaaS con 8 milioni di record nella tabella principale aveva query a 4 secondi nonostante tutti gli indici corretti. L'analisi ha mostrato che il problema non era l'indicizzazione ma il volume. Vi racconto l'approccio di sharding che abbiamo implementato con Laravel e come abbiamo gestito la migrazione live. Continua a leggere
Ultima modifica:

Configurare swap file per risolvere saturazioni RAM su VPS gestite senza supporto tecnico: guida pratica per Debian e Ubuntu

Configurare swap file per risolvere saturazioni RAM su VPS gestite senza supporto tecnico: guida pratica per Debian e Ubuntu Un VPS con 4 GB di RAM e zero swap: MySQL killato dall'OOM killer ogni notte durante l'import listini, con perdita di transazioni InnoDB. Come ho configurato uno swap file da 2 GB con swappiness a 10, perché ZRAM è spesso l'alternativa migliore su NVMe, e come proteggere i processi critici in modo permanente con systemd. Continua a leggere
Ultima modifica:

Strumenti utili per la performance

Tool gratuiti a supporto del tuo lavoro:

Minifier HTML/CSS/JS, SQL formatter.