5 consigli per ottimizzare applicazioni LAMP

Venerdì 23 Settembre 2011 - 09:54

di Maico Orazio

PHP e Open Source

Le statistiche dicono che l’ambiente di sviluppo LAMP (Linux+Apache+MySQL+PHP) è la scelta più popolare tra le architetture di web server in uso oggi. Tale ambiente è utilizzato da servizi come Facebook, Wikipedia e Yahoo, per servire milioni di richieste al giorno, e applicazioni web com Wordpress, Drupal, Joomla, per realizzare siti web con facilità.

John Mertic, sul blog di IBM per sviluppatori, ha realizzato un tutorial dove esamina in cinque semplici passi come ottimizzare le prestazioni delle applicazioni sviluppate per un ambiente LAMP:

  • utilizzare un sistema di cache: il codice già compilato viene memorizzato nella cache, per evitare di essere analizzato e compilato ad ogni richiesta, ovviamente se parte di esso è stato modificato, viene ricompilato e memorizzato in cache per una successiva richiesta;
  • ottimizzare la configurazione di PHP: una serie di opzioni da disattivare e attivare nel file di configurazione php.ini;
  • gestire le tue require() e include(): utilizzare percorsi assoluti e non utilizzare require_once() e include_once() perché oltre a controllare l’esistenza del file devono anche verificare che non sia stato incluso già prima;
  • ottimizzare il database: avere il database su un server diverso dal web server, progettare correttamente tabelle e indici, analizzare le query in esecuzione sul server;
  • memorizzare i dati in cache: avremo bisogno di fare la query una sola volta, memorizzare i risultati nella cache dell’utente e, fin quando la cache scade, saremo in grado di recuperarli, saltando la query.

Ottimi consigli da approfondire sicuramente. Quali tecniche vi sono nuove e quali trovate indispensabili?

Tags:

Categoria: PHP e Open Source | Permalink

Commenti

1

Utilizzo lo Zend Framework, supportato dall’ORM Doctrine2, e sto molto attento alle performance e alle risorce.

1) require: l’autoloading del framework si occupa della gestione delle inclusioni; lazy loading, cache e utilizzo del solo include

2) query: dopo aver strutturato il progetto ed averlo completato, si passa all’ottimizzazione; per ogni pagina si costruisce una sola query che possa restituire tutto l’albero di informazioni necessario; grazie alle metaquery-sql dell’orm lo si riesce a fare molto rapidamente

3) cache: beh, cheddire, utilizzo cache ad hoc per:
- file di configurazione
- loading dei plugin
- strutture di mapping dell’ORM
- risultati delle query
- menu e sezioni dinamici
- localizzazione delle risorse
- script php (opcode cache)
- risorse statiche (sia cache interna sia cache tramite header http)

ognuna delle quali a lunga durata perché cancellata e rigenerata solo quando serve, attraverso opportuni sistemi di triggering.

4) configurazione PHP: eliminazione di tutte le estensioni non utilizzate, chrooting, ottimizzazione delle include library (ne basta di solito una), disabilitazione di tutte le opzioni di “aiuto” al programmatore (deve essere il programma a pensarci)

Applicando tutte queste tecniche (senza le quali il programma funziona comunque correttamente), guadagno dal 60 all’80% di velocità, potendo duplicare e anche triplicare le richieste per secondo.

# - postato da Slam - 23 Settembre 2011 - 10:55

2

sei bravissimo Slam :)

# - postato da luglio7 - 23 Settembre 2011 - 16:47

3

ma infatti, se si utilizza un framework come zf penso che gran parte di queste cose le faccia da solo o ha comunque strumenti semplicissimi per farle in pochi passi

# - postato da gigi - 23 Settembre 2011 - 17:02

4

Ciao a tutti,
mi interesserebbe approfondire il punto 4.
A parte il chrooting che so (più o meno) cos’è mi potete spiegare come individuare e rimuovere le estensioni, ottimizzare le library e disabilitare gli auiti?

Grazie del vostro tempo

# - postato da Max - 27 Settembre 2011 - 08:48

Inserisci il tuo commento:





(puoi usare i seguenti tag HTML per formattare il testo -
a href, b, i, br/, p, strong, em, ul, ol, li, blockquote, pre):

 

Anteprima del commento