Velocizzare l'esecuzione di Joomla!
con Zend Server Community Edition
Enrico Zimuel
Senior Consultant & Architect
Zend Technologies

enrico@zend.com




9 Ottobre 2010 – JoomlaDay Verona
                                    © All rights reserved. Zend Technologies, Inc.
Sommario

●   Zend Server Community Edition (CE)
●   Perchè eseguire Joomla! con Zend Server?
●   Come velocizzare Joomla! con Zend Server
●   Zend Server Cache adapter per Joomla!
●   Benchmark di Joomla!
      ▶   Ver. 1.5.17
      ▶   Ver. 1.6B11



                        © All rights reserved. Zend Technologies, Inc.
Zend Server CE




    © All rights reserved. Zend Technologies, Inc.
Che cos'è Zend Server CE?
●   Zend Server Community Edition è la versione
     gratuita di Zend Server, il PHP application
     server di Zend Technologies
●   E' una soluzione completa, veloce ed affidabile
      per l'esecuzione di applicazioni PHP
●   Disponibile per PHP 5.2 e 5.3 sui seguenti sistemi
      operativi: Gnu/Linux, Ms Windows, Mac OS X,
      IBM i
●   Download:
     http://www.zend.com/products/server-ce/


                     © All rights reserved. Zend Technologies, Inc.
Zend Server CE
●   Alcune caratteristiche:
       ▶   Interfaccia web per la gestione dell'ambiente PHP:
                ●   Configurazione (php.ini)
                ●   Gesione estensioni PHP
                ●   Gestione file di log di PHP ed Apache
                ●   Riavvio dei servizi PHP
       ▶   PHP Performance
                ●   Zend Optimizer+
                ●   Zend Data Cache
       ▶   PHP Debugger
                ●   Zend Debugger
       ▶   Java Bridge (eseguire classi Java da PHP)

                           © All rights reserved. Zend Technologies, Inc.
Non solo la versione community...
●   Zend Server
       ▶   Supporto worldwide con SLA
       ▶   Funzionalità aggiuntive: Monitoring, Code Tracing, Job
             Queue, Page Caching, etc
       ▶   Aggiornamenti software e security hot fixes
●   Zend Server Cluster Manager
       ▶   Versione di fascia Enterprise
       ▶   Supporto worldwide con SLA
       ▶   Funzionalità aggiuntive: Cluster Manager, Session
             Clustering, High availability, Scalable architecture
       ▶   Aggiornamenti software e security hot fixes


                         © All rights reserved. Zend Technologies, Inc.
Joomla! e Zend Server




      © All rights reserved. Zend Technologies, Inc.
Perchè eseguire Joomla! con Zend Server?
 ●   Velocizzare l'esecuzione tramite:
        ▶   Zend Optimizer+
        ▶   Zend Data Cache
●    Facilitare la gestione dello stack PHP
        ▶   Interfaccia web di amministrazione
●    Eseguire il debug dei siti Joomla!
●    Monitorizzare l'esecuzione di Joomla!
        ▶   Tramite file di log (Zend Server CE)
        ▶   Utilizzando le funzionalità di Monitoring e Code
               Tracing (Zend Server/Cluster Manager)

                         © All rights reserved. Zend Technologies, Inc.
Zend Optimizer+
●   E' un acceleratore di codice PHP: tramite caching
    dell'opcode generato dall'interprete PHP
●   Velocizza qualsiasi applicazione PHP senza nessun
    intervento sul codice sorgente
●   Abilitato automaticamente in Zend Server
●   In generale, gli aumenti di performance del codice
    PHP sono rilevanti




                      © All rights reserved. Zend Technologies, Inc.
Zend Optimizer+




            © All rights reserved. Zend Technologies, Inc.
Zend Data Cache
●   Zend Data Cache è un sistema di cache per
     PHP (simile ad APC)
●   Due differenti backend: disco, memoria (shm)
●   PHP API:
       ▶   zend_disk_cache_store(), zend_disk_cache_fetch(),
             zend_disk_cache_delete(), zend_disk_cache_clear()
       ▶   zend_shm_cache_store(), zend_shm_cache_fetch(),
             zend_shm_cache_delete(), zend_shm_cache_clear()
●   Sistema di cache molto veloce
       ▶   Più veloce di Memcached ed APC


                        © All rights reserved. Zend Technologies, Inc.
Esempio: Zend Data Cache
●   Interrogazione ad un database MySQL:

      // accesso al db
      $sql= “SELECT * FROM … WHERE ...”;
      $result= mysql_query($sql);
      $record= mysql_fetch_array($result);
●   Caching dell'interrogazione SQL:

      $key= md5($sql);
      if (!$record= zend_shm_cache_fetch($key)) {
           // accesso al db
           ...
           zend_shm_cache_store($key,$record,60);
      }



                       © All rights reserved. Zend Technologies, Inc.
Velocizzare Joomla! con
    Zend Server CE




       © All rights reserved. Zend Technologies, Inc.
Utilizzo di Zend Server CE
●
    Per accelerare il codice PHP è sufficiente eseguire
      Joomla! su Zend Server CE (nessuna modifica del
      codice sorgente)
●   Per utilizzare il sistema di caching di Zend
      Server è necessario installare un adapter
      specifico (non ancora presente nella versione
      ufficiale di Joomla!)
●   Questo adapter è disponibile sul mio blog:
       ▶   http://www.zimuel.it/blog/projects/




                      © All rights reserved. Zend Technologies, Inc.
Lo storage cache di Joomla! 1.6
●   Joomla! 1.6 dispone di un sistema di caching
      più evoluto rispetto alla versione 1.5
●   Due tipologie di caching:
      ▶   Conservative (come in Joomla 1.5)
      ▶   Progressive
●   Storage ufficialmente supportati:
      ▶   File, APC,XCache, eAccelerator,
            Memcached




                    © All rights reserved. Zend Technologies, Inc.
Configurazione della cache di Joomla!




              © All rights reserved. Zend Technologies, Inc.
Zend Server cache adapter per Joomla!
●   Download:
       ▶   http://www.zimuel.it/blog/projects/
●   Installazione:
       ▶   Unzip del file zscache_joomla16.zip
       ▶   Copia dei file *.php nella directory Joomla:
             /libraries/joomla/cache/storage
       ▶   Edit del file di lingua administrator/language/xx-
             XX/xx-XX.ini ed aggiunta delle linee:

             JLIB_FORM_VALUE_CACHE_ZENDSERVERDISK="Zend
             Server Cache Disk"
             JLIB_FORM_VALUE_CACHE_ZENDSERVERSHM="Zend
             Server Cache Shm"

                        © All rights reserved. Zend Technologies, Inc.
Benchmark Joomla!
con Zend Server CE




    © All rights reserved. Zend Technologies, Inc.
Benchmark Joomla! 1.5.17
●
    Sistema utilizzato:
       ▶   CPU Intel Core 2 a 2.10 Ghz con 2 GB di RAM su
             Gnu/Linux OS kernel 2.6.28
       ▶   Zend Server 5 CE, Apache 2.2.11, PHP 5.3.2,
             Memcached 1.4.5, APC 3.1.3p1, MySQL 5.0.45
●   Esperimento:
       ▶   Test sull'homepage di Joomla! con i dati di test
       ▶   Test di carico: ab -n 100 -c 10
       ▶   Media su 6 esecuzioni
●
    Benchmark completo:
      http://www.zimuel.it/blog/2010/06/benchmarking-zend-server-ce-with-joomla/



                             © All rights reserved. Zend Technologies, Inc.
Benchmark Joomla! 1.5.17
         Acceleratori di codice PHP




         Asse Y: Transfer Rate (Kbyte/sec)


               © All rights reserved. Zend Technologies, Inc.
Benchmark Joomla! 1.5.17
         Acceleratori PHP + Cache




         Asse Y: Transfer Rate (Kbyte/sec)


               © All rights reserved. Zend Technologies, Inc.
Benchmark Joomla! 1.6B11
●
    Sistema utilizzato:
       ▶   CPU Intel Core 2 a 2.10 Ghz con 2 GB di RAM su
             Gnu/Linux OS kernel 2.6.28
       ▶   Zend Server 5.0.3 CE, Apache 2.2.11, PHP 5.3.3,
             Memcached 1.4.5, APC 3.1.4, MySQL 5.0.45
●   Esperimento:
       ▶   Test sull'homepage di Joomla! con i dati di test
       ▶   Test di carico: ab -n 100 -c 10
       ▶   Media su 4 esecuzioni




                        © All rights reserved. Zend Technologies, Inc.
Benchmark Joomla! 1.6R11
                          Acceleratori PHP
     300,000




     250,000



     200,000




     150,000



     100,000




      50,000




       0,000
               No accelerator                      APC                       Zend Optimizer+


               Asse Y: Transfer Rate (Kbyte/sec)

                            © All rights reserved. Zend Technologies, Inc.
Benchmark Joomla! 1.6R11
                          Acceleratori PHP + Cache
 450,000



 400,000


 350,000


 300,000



 250,000


 200,000


 150,000



 100,000


  50,000



   0,000
           APC + Cache      ZSCE + Zend Data Cache (disk)        ZSCE + Zend Data Cache (shm)   ZSCE + Memcached 



                         Asse Y: Transfer Rate (Kbyte/sec)

                                    © All rights reserved. Zend Technologies, Inc.
Sintesi dei benchmark
●   Joomla! 1.5.17
      ▶   Acceleratori PHP: Zend Server CE è circa il 13%
            più veloce di APC
      ▶   Cache: Zend Server CE è circa il 9% più veloce di
            Memcached e circa il 6% più veloce di APC
●   Joomla! 1.6B11
      ▶   Acceleratori PHP: Zend Server CE è circa il 9%
            più veloce di APC
      ▶   Cache: Zend Server CE è circa il 35% più veloce
            di Memcached e circa il 21% più veloce di APC



                       © All rights reserved. Zend Technologies, Inc.
Benchmark Joomla! 1.6
●   Lavoro futuro:
      ▶   Benchmark 1.6 (versione stabile)
      ▶   Aggiungere il confronto con:
              ● eAccelerator
              ● XCache


              ● WinCache




                     © All rights reserved. Zend Technologies, Inc.
Riassumendo
●   Zend Server Community Edition consente di
     velocizzare l'esecuzione di Joomla!
       ▶   Accelerazione del codice PHP (Zend
             Optimizer+)
       ▶   Sistema di caching per Joomla! (Zend Data
             Cache)
●   I margini di miglioramento sono di tutto
    rispetto:
       ▶   fino al 35% (a seconda del sistema di
              caching utilizzato)


                      © All rights reserved. Zend Technologies, Inc.
Domande?




           © All rights reserved. Zend Technologies, Inc.
Grazie!

Per maggiori informazioni:
Enrico Zimuel (enrico@zend.com)

http://www.zend.com
http://www.joomla.org




                © All rights reserved. Zend Technologies, Inc.

Velocizzare Joomla! con Zend Server Community Edition

  • 1.
    Velocizzare l'esecuzione diJoomla! con Zend Server Community Edition Enrico Zimuel Senior Consultant & Architect Zend Technologies enrico@zend.com 9 Ottobre 2010 – JoomlaDay Verona © All rights reserved. Zend Technologies, Inc.
  • 2.
    Sommario ● Zend Server Community Edition (CE) ● Perchè eseguire Joomla! con Zend Server? ● Come velocizzare Joomla! con Zend Server ● Zend Server Cache adapter per Joomla! ● Benchmark di Joomla! ▶ Ver. 1.5.17 ▶ Ver. 1.6B11 © All rights reserved. Zend Technologies, Inc.
  • 3.
    Zend Server CE © All rights reserved. Zend Technologies, Inc.
  • 4.
    Che cos'è ZendServer CE? ● Zend Server Community Edition è la versione gratuita di Zend Server, il PHP application server di Zend Technologies ● E' una soluzione completa, veloce ed affidabile per l'esecuzione di applicazioni PHP ● Disponibile per PHP 5.2 e 5.3 sui seguenti sistemi operativi: Gnu/Linux, Ms Windows, Mac OS X, IBM i ● Download: http://www.zend.com/products/server-ce/ © All rights reserved. Zend Technologies, Inc.
  • 5.
    Zend Server CE ● Alcune caratteristiche: ▶ Interfaccia web per la gestione dell'ambiente PHP: ● Configurazione (php.ini) ● Gesione estensioni PHP ● Gestione file di log di PHP ed Apache ● Riavvio dei servizi PHP ▶ PHP Performance ● Zend Optimizer+ ● Zend Data Cache ▶ PHP Debugger ● Zend Debugger ▶ Java Bridge (eseguire classi Java da PHP) © All rights reserved. Zend Technologies, Inc.
  • 6.
    Non solo laversione community... ● Zend Server ▶ Supporto worldwide con SLA ▶ Funzionalità aggiuntive: Monitoring, Code Tracing, Job Queue, Page Caching, etc ▶ Aggiornamenti software e security hot fixes ● Zend Server Cluster Manager ▶ Versione di fascia Enterprise ▶ Supporto worldwide con SLA ▶ Funzionalità aggiuntive: Cluster Manager, Session Clustering, High availability, Scalable architecture ▶ Aggiornamenti software e security hot fixes © All rights reserved. Zend Technologies, Inc.
  • 7.
    Joomla! e ZendServer © All rights reserved. Zend Technologies, Inc.
  • 8.
    Perchè eseguire Joomla!con Zend Server? ● Velocizzare l'esecuzione tramite: ▶ Zend Optimizer+ ▶ Zend Data Cache ● Facilitare la gestione dello stack PHP ▶ Interfaccia web di amministrazione ● Eseguire il debug dei siti Joomla! ● Monitorizzare l'esecuzione di Joomla! ▶ Tramite file di log (Zend Server CE) ▶ Utilizzando le funzionalità di Monitoring e Code Tracing (Zend Server/Cluster Manager) © All rights reserved. Zend Technologies, Inc.
  • 9.
    Zend Optimizer+ ● E' un acceleratore di codice PHP: tramite caching dell'opcode generato dall'interprete PHP ● Velocizza qualsiasi applicazione PHP senza nessun intervento sul codice sorgente ● Abilitato automaticamente in Zend Server ● In generale, gli aumenti di performance del codice PHP sono rilevanti © All rights reserved. Zend Technologies, Inc.
  • 10.
    Zend Optimizer+ © All rights reserved. Zend Technologies, Inc.
  • 11.
    Zend Data Cache ● Zend Data Cache è un sistema di cache per PHP (simile ad APC) ● Due differenti backend: disco, memoria (shm) ● PHP API: ▶ zend_disk_cache_store(), zend_disk_cache_fetch(), zend_disk_cache_delete(), zend_disk_cache_clear() ▶ zend_shm_cache_store(), zend_shm_cache_fetch(), zend_shm_cache_delete(), zend_shm_cache_clear() ● Sistema di cache molto veloce ▶ Più veloce di Memcached ed APC © All rights reserved. Zend Technologies, Inc.
  • 12.
    Esempio: Zend DataCache ● Interrogazione ad un database MySQL: // accesso al db $sql= “SELECT * FROM … WHERE ...”; $result= mysql_query($sql); $record= mysql_fetch_array($result); ● Caching dell'interrogazione SQL: $key= md5($sql); if (!$record= zend_shm_cache_fetch($key)) { // accesso al db ... zend_shm_cache_store($key,$record,60); } © All rights reserved. Zend Technologies, Inc.
  • 13.
    Velocizzare Joomla! con Zend Server CE © All rights reserved. Zend Technologies, Inc.
  • 14.
    Utilizzo di ZendServer CE ● Per accelerare il codice PHP è sufficiente eseguire Joomla! su Zend Server CE (nessuna modifica del codice sorgente) ● Per utilizzare il sistema di caching di Zend Server è necessario installare un adapter specifico (non ancora presente nella versione ufficiale di Joomla!) ● Questo adapter è disponibile sul mio blog: ▶ http://www.zimuel.it/blog/projects/ © All rights reserved. Zend Technologies, Inc.
  • 15.
    Lo storage cachedi Joomla! 1.6 ● Joomla! 1.6 dispone di un sistema di caching più evoluto rispetto alla versione 1.5 ● Due tipologie di caching: ▶ Conservative (come in Joomla 1.5) ▶ Progressive ● Storage ufficialmente supportati: ▶ File, APC,XCache, eAccelerator, Memcached © All rights reserved. Zend Technologies, Inc.
  • 16.
    Configurazione della cachedi Joomla! © All rights reserved. Zend Technologies, Inc.
  • 17.
    Zend Server cacheadapter per Joomla! ● Download: ▶ http://www.zimuel.it/blog/projects/ ● Installazione: ▶ Unzip del file zscache_joomla16.zip ▶ Copia dei file *.php nella directory Joomla: /libraries/joomla/cache/storage ▶ Edit del file di lingua administrator/language/xx- XX/xx-XX.ini ed aggiunta delle linee: JLIB_FORM_VALUE_CACHE_ZENDSERVERDISK="Zend Server Cache Disk" JLIB_FORM_VALUE_CACHE_ZENDSERVERSHM="Zend Server Cache Shm" © All rights reserved. Zend Technologies, Inc.
  • 18.
    Benchmark Joomla! con ZendServer CE © All rights reserved. Zend Technologies, Inc.
  • 19.
    Benchmark Joomla! 1.5.17 ● Sistema utilizzato: ▶ CPU Intel Core 2 a 2.10 Ghz con 2 GB di RAM su Gnu/Linux OS kernel 2.6.28 ▶ Zend Server 5 CE, Apache 2.2.11, PHP 5.3.2, Memcached 1.4.5, APC 3.1.3p1, MySQL 5.0.45 ● Esperimento: ▶ Test sull'homepage di Joomla! con i dati di test ▶ Test di carico: ab -n 100 -c 10 ▶ Media su 6 esecuzioni ● Benchmark completo: http://www.zimuel.it/blog/2010/06/benchmarking-zend-server-ce-with-joomla/ © All rights reserved. Zend Technologies, Inc.
  • 20.
    Benchmark Joomla! 1.5.17 Acceleratori di codice PHP Asse Y: Transfer Rate (Kbyte/sec) © All rights reserved. Zend Technologies, Inc.
  • 21.
    Benchmark Joomla! 1.5.17 Acceleratori PHP + Cache Asse Y: Transfer Rate (Kbyte/sec) © All rights reserved. Zend Technologies, Inc.
  • 22.
    Benchmark Joomla! 1.6B11 ● Sistema utilizzato: ▶ CPU Intel Core 2 a 2.10 Ghz con 2 GB di RAM su Gnu/Linux OS kernel 2.6.28 ▶ Zend Server 5.0.3 CE, Apache 2.2.11, PHP 5.3.3, Memcached 1.4.5, APC 3.1.4, MySQL 5.0.45 ● Esperimento: ▶ Test sull'homepage di Joomla! con i dati di test ▶ Test di carico: ab -n 100 -c 10 ▶ Media su 4 esecuzioni © All rights reserved. Zend Technologies, Inc.
  • 23.
    Benchmark Joomla! 1.6R11 Acceleratori PHP 300,000 250,000 200,000 150,000 100,000 50,000 0,000 No accelerator APC Zend Optimizer+ Asse Y: Transfer Rate (Kbyte/sec) © All rights reserved. Zend Technologies, Inc.
  • 24.
    Benchmark Joomla! 1.6R11 Acceleratori PHP + Cache 450,000 400,000 350,000 300,000 250,000 200,000 150,000 100,000 50,000 0,000 APC + Cache ZSCE + Zend Data Cache (disk) ZSCE + Zend Data Cache (shm) ZSCE + Memcached  Asse Y: Transfer Rate (Kbyte/sec) © All rights reserved. Zend Technologies, Inc.
  • 25.
    Sintesi dei benchmark ● Joomla! 1.5.17 ▶ Acceleratori PHP: Zend Server CE è circa il 13% più veloce di APC ▶ Cache: Zend Server CE è circa il 9% più veloce di Memcached e circa il 6% più veloce di APC ● Joomla! 1.6B11 ▶ Acceleratori PHP: Zend Server CE è circa il 9% più veloce di APC ▶ Cache: Zend Server CE è circa il 35% più veloce di Memcached e circa il 21% più veloce di APC © All rights reserved. Zend Technologies, Inc.
  • 26.
    Benchmark Joomla! 1.6 ● Lavoro futuro: ▶ Benchmark 1.6 (versione stabile) ▶ Aggiungere il confronto con: ● eAccelerator ● XCache ● WinCache © All rights reserved. Zend Technologies, Inc.
  • 27.
    Riassumendo ● Zend Server Community Edition consente di velocizzare l'esecuzione di Joomla! ▶ Accelerazione del codice PHP (Zend Optimizer+) ▶ Sistema di caching per Joomla! (Zend Data Cache) ● I margini di miglioramento sono di tutto rispetto: ▶ fino al 35% (a seconda del sistema di caching utilizzato) © All rights reserved. Zend Technologies, Inc.
  • 28.
    Domande? © All rights reserved. Zend Technologies, Inc.
  • 29.
    Grazie! Per maggiori informazioni: EnricoZimuel (enrico@zend.com) http://www.zend.com http://www.joomla.org © All rights reserved. Zend Technologies, Inc.