SlideShare a Scribd company logo
1 of 31
Drupal
 Optimisation des performances


Par Jean-Baptiste Guerraz (@skilld_fr) & Frédéric Marand (@OSInet)
« Frédéric, gérant
OSInet, est spécialisé
dans la sécurité et les
hautes performances
Drupal. »
« Jean-Baptiste,
directeur technique de
Skilld, est spécialisé dans
la gestion technique des
projets Drupal & mobile
performants »
Desserrez les freins !
• « Le cache » de          • PHP
  Drupal                     – 5.3
  – Drupal 6                 – 5.4
     • Agressif ?          • Cache d'opcodes
  – Drupal 7                 – APC
     • RTFS(ettings.php)
                             – Zend cache
                             – Xcache
                             – EAccelerator
Du cache pour PHP & Drupal
> Décharger PHP
   • APC
      Requête                                     Requête


                                             Lecture Opcodes
  Compilation PHP                                dans APC
                                   HIT                              MISS
                        APC
Exécution des opcodes         Exécution des opcodes     Compilation PHP



   Fin de requête                Fin de requête       Exécution des opcodes



                                                            Fin de requête
Du cache pour PHP & Drupal
> Décharger PHP
   • APC 3.1.9

                                        // allocate one segment of 32Mb
                                        apc.shm_segments=1
                                        apc.shm_size=32

                                        // do not check if php file was updated
                                        apc.stat= 0

                                        // never expire
                                        apc.ttl = 0

                                        // use kernel anonymous memory
                                        apc.mmap_file_mask = /dev/zero.




          Pour les geeks : http://www.techpresentations.org/APC_at_Facebook
Et au-delà ?
On mesure !
• Deux façons d'accélérer
   – Gonfler le moteur
   – Réduire les causes de lenteur
      • Travailler moins
      • Travailler mieux
• Facile !
   – Tout cacher ?
   – NoSQL plus rapide ?
   – La « littérature » de fanboy/marketer
   – curl vs browser, ou back vs front
Du cache pour PHP & Drupal
> Décharger MySQL
   • APC
   • Memcache                                       Temps de réponse
                                                    (ms)

      • Le cache Drupal est par défaut stocké en
      base de données
      • Déplacer le cache en mémoire (memcache)
      permet de retourner les données vite, mais
      surtout retire de la charge à la base
      • 1 instance memcache par cache (views,
      page, block, …) facilite la manipulation du
      cache. D6 vs D7
   • Mais un cache n'est pas une base...
Du cache pour PHP & Drupal

> Décharger MySQL :
  cacher en base ?

    ●
     MongoDB
    ●
     REDIS
    ●
     MySQL !
URL

Optimiser les images
                                                                          Imagecache
                                                                            External

> External cache
    • Une image externe = une image                     Image                  Image
    comme une autre
    (pas de résolution de domaine supplémentaire)
                                                            Image / Image Cache
> Image cache
    • Une taille = une image
    (pas de redimension via JS / CSS)               Image    Image     Image      Image

> Optimize
   • Une image = une image optimisée                          Image Optimize
   en poids
    (pas d'image de 2Mb!!)
                                                    Image    Image     Image      Image
Optimiser les images
> Sprites (et / versus) CSS Embed Image


      Image Image Image           Image Image Image
                           CSS                                  CSS
      Image Image Image           Image Image Image




                 Sprites                  CSS Embed Images



         Image Image       CSS              Image Image

            Sprite
      Image Image Image                   Image   CSS   Image


         Image Image                        Image Image
CSS   CSS    CSS       JS     JS   JS
CSS & JavaScript
                                                  CSS   CSS    CSS       JS     JS   JS
> Minimiser le nombre de requêtes
     •Agréger
         •Core aggregates
         •Core library                                        Core aggregates
         •Advanced Aggregates
         (D7 en cours de portage)
                                                  CSS   CSS                     JS   JS
> Minimiser le poids des fichiers
     •Minifier
          • Core library (JS only)                       CSS Compressor / JSMin
          •JSMin / CSS Compressor (JSMin+ / CSS
          Tidy)
          •Advanced Aggregates
                                                  CSS   CSS                     JS   JS
          (D7 en cours de portage)

    •Compresser
                                                        Core aggregates compress
        •Core aggregates
        •Nginx / Apache
        •Advanced Aggregates
        (D7 en cours de portage)                  CSS   CSS                     JS   JS
Stockages de données

> MySQL

Et les autres ?
●
 PostgreSQL, SQLite
●
 SQL Server, Azure
●
 Oracle, DB2
Stockages de données
> NoSQL
  •MongoDB
  •CouchDB, Riak
  •Redis
  •Tokyo / Kyoto
  •Les autres
Adapter la techno aux données :
  •REDIS → Analytics, not logging
  •MongoDB → Flow, not transactions
Stockages de données
> Quelles données NoSQL
  •D6
    •Sessions, logs
  •D7
    •Field Storage, Lock, Queue
    •Découpler les queues
  •D8
    •Entity, File
Chargements & affichages des pages
       > Paralléliser les téléchargements
          •CDN (URL sharding)
                                                    Page affichée                                                         Page affichée
site.com   HTML                                                                site.com    HTML


site.com          CSS                                                          static1.site.com   CSS   JS                  Image


                  CSS


                        CSS

site.com                                                                       static2.site.com   CSS                JS     Image
                              JS                                      CDN
                                           JS                          -
                                                                      URL
site.com                                                                       static3.site.com   CSS
                                                Image               Sharding                                                Image


                                                Image


                                                        Image




                                   Temps                                                                     Temps
Chargements & affichages des pages
> Profiter un maximum du cache navigateur
    • CDN (far future)
        • Tant que l’agrégat CSS et/ou JS n'a pas
        changé, ne pas le recharger !
            • Idem pour les images et autres
            ressources statiques !
Chargements & affichages des pages
> Upload de cookie & ressources statiques
   • Une image, un fichier CSS, ou bien un fichier JS ne
   doivent pas nécessiter d'information relative a
   l'utilisateur.
   • Sur une connexion DSL standard, un cookie de 500
   octets fait perdre environ une milliseconde par requête
   (100 images, 100 requêtes => 100 millisecondes de
   perdu)

                      Module CDN & URL Sharding
                                    +
          $cookie_domain (settings.php) sur le domaine principal
                                    =
        Des domaines (pour les ressources statiques) sans cookies !
Chargements & affichages des pages
> Les JavaScripts, tendances & bloquants !
    • De plus en plus de JavaScripts sont utilisés
    • Le chargement d'un JavaScript est bloquant
                                           Page affichée                                    Page affichée
site.com    HTML                                                         site.com     HTML


static1.site.com   CSS   JS                 Image                        static1.site.com
                                                                                             CSS      JS


                                                                                             Image



static2.site.com   CSS                JS    Image
                                                                         static2.site.com     CSS     JS
                                                             Head.js
                                                           (ou Lab.js)                       Image

static3.site.com   CSS                      Image


                                                                         static3.site.com     CSS


                                                                                             Image




                              Temps
                                                                                        Temps
Cache des pages & ressources


> Varnish

●
  Anonymes vs authentifiés
●
  Expiration vs invalidation
●
  ESI
Analyse : caches

Snapshot control
    ●
      APC control panel
    ●
      Memcache
        ●
          control panel
        ●
          Drupal memcache_admin
        ●
          phpmemcacheadmin
●
  History / baseline
    ●
      Munin, ...
    ●
      SaaS : NewRelic
    ●
      Events : Nagios, ...
Analyse : code = Profiling


- XDebug & KcacheGrind
- Zend Profiler
- XHProf
     * avantages / limitations
     * modules devel, xhprof
Analyses : système d'exploitation

> strace
  • syscall trace : observer les
  appels système
> Dtrace
  • Solaris
  • Observer tout dans le système
Analyses : base de données
> Snapshots
  • relever les compteurs: phpmyadmin
> Logging
  • Enregistrement
     • mysql slow queries
     • Percona vs Oracle
     • Munin...
  • Anemometer
Analyses : black box ou white box ?



> tcpdump & wireshark
   • Observer les flux
> grep, IDE
   • Observer les sources
Analyses


> GTMetrix
Analyses


> YSlow & Google Pagespeed
Analyses
> Firebug & Chrome inspector & Dragon Fly (;))
Analyses
> Whichloadsfaster.com
Merci !! Des questions ?:)




       Retrouvez cette présentation sur Slideshare,
           cherchez skilld_fr, jbguerraz ou osinet

More Related Content

Viewers also liked

Marcel presentacion
Marcel presentacionMarcel presentacion
Marcel presentacionmateranooo
 
KUJJUK - Solution globale de présentation de produits - fiches produits confé...
KUJJUK - Solution globale de présentation de produits - fiches produits confé...KUJJUK - Solution globale de présentation de produits - fiches produits confé...
KUJJUK - Solution globale de présentation de produits - fiches produits confé...Léo Ginailhac
 
Hormigas de caceria
Hormigas de caceriaHormigas de caceria
Hormigas de caceriaFelipe Tovar
 
Universidad estatal península de santa elena
Universidad estatal península de santa elenaUniversidad estatal península de santa elena
Universidad estatal península de santa elenaRossy Mell
 
La Belgique apres 5 mois sous Di Rupo I
La Belgique apres 5 mois sous Di Rupo ILa Belgique apres 5 mois sous Di Rupo I
La Belgique apres 5 mois sous Di Rupo IEY Belgium
 
Hwile Studio Facebook
Hwile Studio FacebookHwile Studio Facebook
Hwile Studio Facebookrbollet
 
Admisión a Grados UNED
Admisión a Grados UNEDAdmisión a Grados UNED
Admisión a Grados UNEDelviramarina
 
82261 une ecluse-insolite(1)
82261 une ecluse-insolite(1)82261 une ecluse-insolite(1)
82261 une ecluse-insolite(1)lebosco
 
Newsletter #1 - Le Hibou Agence .V. du 6 avril 2012
Newsletter #1 - Le Hibou Agence .V. du 6 avril 2012Newsletter #1 - Le Hibou Agence .V. du 6 avril 2012
Newsletter #1 - Le Hibou Agence .V. du 6 avril 2012Le Hibou
 
Células y tejidos
Células y tejidosCélulas y tejidos
Células y tejidos1125Lu
 

Viewers also liked (20)

Marcel presentacion
Marcel presentacionMarcel presentacion
Marcel presentacion
 
Diapositivas skype
Diapositivas skypeDiapositivas skype
Diapositivas skype
 
KUJJUK - Solution globale de présentation de produits - fiches produits confé...
KUJJUK - Solution globale de présentation de produits - fiches produits confé...KUJJUK - Solution globale de présentation de produits - fiches produits confé...
KUJJUK - Solution globale de présentation de produits - fiches produits confé...
 
Currículum oculto
Currículum ocultoCurrículum oculto
Currículum oculto
 
Core Values
Core ValuesCore Values
Core Values
 
Hormigas de caceria
Hormigas de caceriaHormigas de caceria
Hormigas de caceria
 
Universidad estatal península de santa elena
Universidad estatal península de santa elenaUniversidad estatal península de santa elena
Universidad estatal península de santa elena
 
La Belgique apres 5 mois sous Di Rupo I
La Belgique apres 5 mois sous Di Rupo ILa Belgique apres 5 mois sous Di Rupo I
La Belgique apres 5 mois sous Di Rupo I
 
Internet
InternetInternet
Internet
 
Meteo Bovio Italie
Meteo Bovio ItalieMeteo Bovio Italie
Meteo Bovio Italie
 
Hwile Studio Facebook
Hwile Studio FacebookHwile Studio Facebook
Hwile Studio Facebook
 
Motivacion
Motivacion Motivacion
Motivacion
 
Admisión a Grados UNED
Admisión a Grados UNEDAdmisión a Grados UNED
Admisión a Grados UNED
 
82261 une ecluse-insolite(1)
82261 une ecluse-insolite(1)82261 une ecluse-insolite(1)
82261 une ecluse-insolite(1)
 
Carlos alejandro palma
Carlos alejandro palmaCarlos alejandro palma
Carlos alejandro palma
 
Newsletter #1 - Le Hibou Agence .V. du 6 avril 2012
Newsletter #1 - Le Hibou Agence .V. du 6 avril 2012Newsletter #1 - Le Hibou Agence .V. du 6 avril 2012
Newsletter #1 - Le Hibou Agence .V. du 6 avril 2012
 
Células y tejidos
Células y tejidosCélulas y tejidos
Células y tejidos
 
Test
TestTest
Test
 
Presentación1
Presentación1Presentación1
Presentación1
 
Présentation des ateliers
Présentation des ateliersPrésentation des ateliers
Présentation des ateliers
 

Similar to Drupagora 2012 Optimisation performances Drupal

Drupagora 2012 Optimisation performances Drupal
Drupagora 2012 Optimisation performances DrupalDrupagora 2012 Optimisation performances Drupal
Drupagora 2012 Optimisation performances DrupalSkilld
 
Améliorer la rapidité de son site web
Améliorer la rapidité de son site webAméliorer la rapidité de son site web
Améliorer la rapidité de son site webEmmanuel Gautier
 
AWS Paris Summit 2014 - T1 - Services de bases de données
AWS Paris Summit 2014 - T1 - Services de bases de donnéesAWS Paris Summit 2014 - T1 - Services de bases de données
AWS Paris Summit 2014 - T1 - Services de bases de donnéesAmazon Web Services
 
AWS Summit Paris - Track 2 - Session 2 - Préparez-vous à l'imprévu
AWS Summit Paris - Track 2 - Session 2 - Préparez-vous à l'imprévuAWS Summit Paris - Track 2 - Session 2 - Préparez-vous à l'imprévu
AWS Summit Paris - Track 2 - Session 2 - Préparez-vous à l'imprévuAmazon Web Services
 
10 conseils pour booster les performances de votre site sous WordPress
10 conseils pour booster les performances de votre site sous WordPress10 conseils pour booster les performances de votre site sous WordPress
10 conseils pour booster les performances de votre site sous WordPressAurélien Denis
 
Le SEO JavaScript démystifié
Le SEO JavaScript démystifiéLe SEO JavaScript démystifié
Le SEO JavaScript démystifiéAdrien Russo
 
Ma participation au WebPerf Contest 2010
Ma participation au WebPerf Contest 2010Ma participation au WebPerf Contest 2010
Ma participation au WebPerf Contest 2010Cédric MORIN
 
Performances Web Mobile
Performances Web MobilePerformances Web Mobile
Performances Web MobileWilly Leloutre
 
Optimiser WordPress
Optimiser WordPressOptimiser WordPress
Optimiser WordPressChi Nacim
 
Retours sur le concours Webperf 2010
Retours sur le concours Webperf 2010Retours sur le concours Webperf 2010
Retours sur le concours Webperf 2010Jean-Pierre Vincent
 
SPIP et la gestion de la performance
SPIP et la gestion de la performanceSPIP et la gestion de la performance
SPIP et la gestion de la performanceCédric MORIN
 
Relational databases & NoSQL databases
Relational databases & NoSQL databasesRelational databases & NoSQL databases
Relational databases & NoSQL databasesCédric Villa
 
Stockage et Cloud [#CloudAccelerate 13/06/2014 @ IBM CC Paris]
Stockage et Cloud [#CloudAccelerate 13/06/2014 @ IBM CC Paris]Stockage et Cloud [#CloudAccelerate 13/06/2014 @ IBM CC Paris]
Stockage et Cloud [#CloudAccelerate 13/06/2014 @ IBM CC Paris]IBM France PME-ETI
 
Codedarmor 2012 - 06/03 - HTML5, CSS3 et Javascript
Codedarmor 2012 - 06/03 - HTML5, CSS3 et JavascriptCodedarmor 2012 - 06/03 - HTML5, CSS3 et Javascript
Codedarmor 2012 - 06/03 - HTML5, CSS3 et Javascriptcodedarmor
 
CSS3 - Possibilite creatives
CSS3 - Possibilite creativesCSS3 - Possibilite creatives
CSS3 - Possibilite creativesRémy Savard
 
SEO & Javascript en 2021 : Challenger les acquis - Alexandre Pinat - SEO CAMP...
SEO & Javascript en 2021 : Challenger les acquis - Alexandre Pinat - SEO CAMP...SEO & Javascript en 2021 : Challenger les acquis - Alexandre Pinat - SEO CAMP...
SEO & Javascript en 2021 : Challenger les acquis - Alexandre Pinat - SEO CAMP...SEO CAMP
 
Azure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmediaAzure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmediaMicrosoft
 

Similar to Drupagora 2012 Optimisation performances Drupal (20)

Drupagora 2012 Optimisation performances Drupal
Drupagora 2012 Optimisation performances DrupalDrupagora 2012 Optimisation performances Drupal
Drupagora 2012 Optimisation performances Drupal
 
Améliorer la rapidité de son site web
Améliorer la rapidité de son site webAméliorer la rapidité de son site web
Améliorer la rapidité de son site web
 
Systematic, toolchain JS
Systematic, toolchain JSSystematic, toolchain JS
Systematic, toolchain JS
 
AWS Paris Summit 2014 - T1 - Services de bases de données
AWS Paris Summit 2014 - T1 - Services de bases de donnéesAWS Paris Summit 2014 - T1 - Services de bases de données
AWS Paris Summit 2014 - T1 - Services de bases de données
 
AWS Summit Paris - Track 2 - Session 2 - Préparez-vous à l'imprévu
AWS Summit Paris - Track 2 - Session 2 - Préparez-vous à l'imprévuAWS Summit Paris - Track 2 - Session 2 - Préparez-vous à l'imprévu
AWS Summit Paris - Track 2 - Session 2 - Préparez-vous à l'imprévu
 
10 conseils pour booster les performances de votre site sous WordPress
10 conseils pour booster les performances de votre site sous WordPress10 conseils pour booster les performances de votre site sous WordPress
10 conseils pour booster les performances de votre site sous WordPress
 
Le SEO JavaScript démystifié
Le SEO JavaScript démystifiéLe SEO JavaScript démystifié
Le SEO JavaScript démystifié
 
Talk performance web
Talk performance webTalk performance web
Talk performance web
 
Ma participation au WebPerf Contest 2010
Ma participation au WebPerf Contest 2010Ma participation au WebPerf Contest 2010
Ma participation au WebPerf Contest 2010
 
Performances Web Mobile
Performances Web MobilePerformances Web Mobile
Performances Web Mobile
 
Optimiser wordpress
Optimiser wordpressOptimiser wordpress
Optimiser wordpress
 
Optimiser WordPress
Optimiser WordPressOptimiser WordPress
Optimiser WordPress
 
Retours sur le concours Webperf 2010
Retours sur le concours Webperf 2010Retours sur le concours Webperf 2010
Retours sur le concours Webperf 2010
 
SPIP et la gestion de la performance
SPIP et la gestion de la performanceSPIP et la gestion de la performance
SPIP et la gestion de la performance
 
Relational databases & NoSQL databases
Relational databases & NoSQL databasesRelational databases & NoSQL databases
Relational databases & NoSQL databases
 
Stockage et Cloud [#CloudAccelerate 13/06/2014 @ IBM CC Paris]
Stockage et Cloud [#CloudAccelerate 13/06/2014 @ IBM CC Paris]Stockage et Cloud [#CloudAccelerate 13/06/2014 @ IBM CC Paris]
Stockage et Cloud [#CloudAccelerate 13/06/2014 @ IBM CC Paris]
 
Codedarmor 2012 - 06/03 - HTML5, CSS3 et Javascript
Codedarmor 2012 - 06/03 - HTML5, CSS3 et JavascriptCodedarmor 2012 - 06/03 - HTML5, CSS3 et Javascript
Codedarmor 2012 - 06/03 - HTML5, CSS3 et Javascript
 
CSS3 - Possibilite creatives
CSS3 - Possibilite creativesCSS3 - Possibilite creatives
CSS3 - Possibilite creatives
 
SEO & Javascript en 2021 : Challenger les acquis - Alexandre Pinat - SEO CAMP...
SEO & Javascript en 2021 : Challenger les acquis - Alexandre Pinat - SEO CAMP...SEO & Javascript en 2021 : Challenger les acquis - Alexandre Pinat - SEO CAMP...
SEO & Javascript en 2021 : Challenger les acquis - Alexandre Pinat - SEO CAMP...
 
Azure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmediaAzure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmedia
 

More from Skilld

201910 skilld presentation-societe
201910 skilld presentation-societe201910 skilld presentation-societe
201910 skilld presentation-societeSkilld
 
Session Drupagora 2019 - Agilité dans tous ses états
Session Drupagora 2019 - Agilité dans tous ses étatsSession Drupagora 2019 - Agilité dans tous ses états
Session Drupagora 2019 - Agilité dans tous ses étatsSkilld
 
Case study : 2 applications mobiles réalisées avec Drupal
Case study : 2 applications mobiles réalisées avec DrupalCase study : 2 applications mobiles réalisées avec Drupal
Case study : 2 applications mobiles réalisées avec DrupalSkilld
 
Lviv eurodrupalcamp 2015 - drupal contributor howto
Lviv eurodrupalcamp 2015  - drupal contributor howtoLviv eurodrupalcamp 2015  - drupal contributor howto
Lviv eurodrupalcamp 2015 - drupal contributor howtoSkilld
 
Build tons of multi-device JavaScript applications - Part 2 : (black) Magic S...
Build tons of multi-device JavaScript applications - Part 2 : (black) Magic S...Build tons of multi-device JavaScript applications - Part 2 : (black) Magic S...
Build tons of multi-device JavaScript applications - Part 2 : (black) Magic S...Skilld
 
Build tons of multi-device JavaScript applications - Part 1 : Boilerplate, de...
Build tons of multi-device JavaScript applications - Part 1 : Boilerplate, de...Build tons of multi-device JavaScript applications - Part 1 : Boilerplate, de...
Build tons of multi-device JavaScript applications - Part 1 : Boilerplate, de...Skilld
 
Drupal, les hackers, la sécurité & les (très) grands comptes
Drupal, les hackers, la sécurité & les (très) grands comptesDrupal, les hackers, la sécurité & les (très) grands comptes
Drupal, les hackers, la sécurité & les (très) grands comptesSkilld
 
Lviv 2013 d7 vs d8
Lviv 2013 d7 vs d8Lviv 2013 d7 vs d8
Lviv 2013 d7 vs d8Skilld
 
Retrospective 2013 de Drupal !
Retrospective 2013 de Drupal !Retrospective 2013 de Drupal !
Retrospective 2013 de Drupal !Skilld
 
Retrospective 2013 de la communauté Drupal 8
Retrospective 2013 de la communauté Drupal 8Retrospective 2013 de la communauté Drupal 8
Retrospective 2013 de la communauté Drupal 8Skilld
 
Drupal Camp Kiev 2012 - High Performance Drupal Web Sites
Drupal Camp Kiev 2012 - High Performance Drupal Web SitesDrupal Camp Kiev 2012 - High Performance Drupal Web Sites
Drupal Camp Kiev 2012 - High Performance Drupal Web SitesSkilld
 

More from Skilld (11)

201910 skilld presentation-societe
201910 skilld presentation-societe201910 skilld presentation-societe
201910 skilld presentation-societe
 
Session Drupagora 2019 - Agilité dans tous ses états
Session Drupagora 2019 - Agilité dans tous ses étatsSession Drupagora 2019 - Agilité dans tous ses états
Session Drupagora 2019 - Agilité dans tous ses états
 
Case study : 2 applications mobiles réalisées avec Drupal
Case study : 2 applications mobiles réalisées avec DrupalCase study : 2 applications mobiles réalisées avec Drupal
Case study : 2 applications mobiles réalisées avec Drupal
 
Lviv eurodrupalcamp 2015 - drupal contributor howto
Lviv eurodrupalcamp 2015  - drupal contributor howtoLviv eurodrupalcamp 2015  - drupal contributor howto
Lviv eurodrupalcamp 2015 - drupal contributor howto
 
Build tons of multi-device JavaScript applications - Part 2 : (black) Magic S...
Build tons of multi-device JavaScript applications - Part 2 : (black) Magic S...Build tons of multi-device JavaScript applications - Part 2 : (black) Magic S...
Build tons of multi-device JavaScript applications - Part 2 : (black) Magic S...
 
Build tons of multi-device JavaScript applications - Part 1 : Boilerplate, de...
Build tons of multi-device JavaScript applications - Part 1 : Boilerplate, de...Build tons of multi-device JavaScript applications - Part 1 : Boilerplate, de...
Build tons of multi-device JavaScript applications - Part 1 : Boilerplate, de...
 
Drupal, les hackers, la sécurité & les (très) grands comptes
Drupal, les hackers, la sécurité & les (très) grands comptesDrupal, les hackers, la sécurité & les (très) grands comptes
Drupal, les hackers, la sécurité & les (très) grands comptes
 
Lviv 2013 d7 vs d8
Lviv 2013 d7 vs d8Lviv 2013 d7 vs d8
Lviv 2013 d7 vs d8
 
Retrospective 2013 de Drupal !
Retrospective 2013 de Drupal !Retrospective 2013 de Drupal !
Retrospective 2013 de Drupal !
 
Retrospective 2013 de la communauté Drupal 8
Retrospective 2013 de la communauté Drupal 8Retrospective 2013 de la communauté Drupal 8
Retrospective 2013 de la communauté Drupal 8
 
Drupal Camp Kiev 2012 - High Performance Drupal Web Sites
Drupal Camp Kiev 2012 - High Performance Drupal Web SitesDrupal Camp Kiev 2012 - High Performance Drupal Web Sites
Drupal Camp Kiev 2012 - High Performance Drupal Web Sites
 

Drupagora 2012 Optimisation performances Drupal

  • 1. Drupal Optimisation des performances Par Jean-Baptiste Guerraz (@skilld_fr) & Frédéric Marand (@OSInet)
  • 2. « Frédéric, gérant OSInet, est spécialisé dans la sécurité et les hautes performances Drupal. »
  • 3. « Jean-Baptiste, directeur technique de Skilld, est spécialisé dans la gestion technique des projets Drupal & mobile performants »
  • 4. Desserrez les freins ! • « Le cache » de • PHP Drupal – 5.3 – Drupal 6 – 5.4 • Agressif ? • Cache d'opcodes – Drupal 7 – APC • RTFS(ettings.php) – Zend cache – Xcache – EAccelerator
  • 5. Du cache pour PHP & Drupal > Décharger PHP • APC Requête Requête Lecture Opcodes Compilation PHP dans APC HIT MISS APC Exécution des opcodes Exécution des opcodes Compilation PHP Fin de requête Fin de requête Exécution des opcodes Fin de requête
  • 6. Du cache pour PHP & Drupal > Décharger PHP • APC 3.1.9 // allocate one segment of 32Mb apc.shm_segments=1 apc.shm_size=32 // do not check if php file was updated apc.stat= 0 // never expire apc.ttl = 0 // use kernel anonymous memory apc.mmap_file_mask = /dev/zero. Pour les geeks : http://www.techpresentations.org/APC_at_Facebook
  • 8. On mesure ! • Deux façons d'accélérer – Gonfler le moteur – Réduire les causes de lenteur • Travailler moins • Travailler mieux • Facile ! – Tout cacher ? – NoSQL plus rapide ? – La « littérature » de fanboy/marketer – curl vs browser, ou back vs front
  • 9. Du cache pour PHP & Drupal > Décharger MySQL • APC • Memcache Temps de réponse (ms) • Le cache Drupal est par défaut stocké en base de données • Déplacer le cache en mémoire (memcache) permet de retourner les données vite, mais surtout retire de la charge à la base • 1 instance memcache par cache (views, page, block, …) facilite la manipulation du cache. D6 vs D7 • Mais un cache n'est pas une base...
  • 10. Du cache pour PHP & Drupal > Décharger MySQL : cacher en base ? ● MongoDB ● REDIS ● MySQL !
  • 11. URL Optimiser les images Imagecache External > External cache • Une image externe = une image Image Image comme une autre (pas de résolution de domaine supplémentaire) Image / Image Cache > Image cache • Une taille = une image (pas de redimension via JS / CSS) Image Image Image Image > Optimize • Une image = une image optimisée Image Optimize en poids (pas d'image de 2Mb!!) Image Image Image Image
  • 12. Optimiser les images > Sprites (et / versus) CSS Embed Image Image Image Image Image Image Image CSS CSS Image Image Image Image Image Image Sprites CSS Embed Images Image Image CSS Image Image Sprite Image Image Image Image CSS Image Image Image Image Image
  • 13. CSS CSS CSS JS JS JS CSS & JavaScript CSS CSS CSS JS JS JS > Minimiser le nombre de requêtes •Agréger •Core aggregates •Core library Core aggregates •Advanced Aggregates (D7 en cours de portage) CSS CSS JS JS > Minimiser le poids des fichiers •Minifier • Core library (JS only) CSS Compressor / JSMin •JSMin / CSS Compressor (JSMin+ / CSS Tidy) •Advanced Aggregates CSS CSS JS JS (D7 en cours de portage) •Compresser Core aggregates compress •Core aggregates •Nginx / Apache •Advanced Aggregates (D7 en cours de portage) CSS CSS JS JS
  • 14. Stockages de données > MySQL Et les autres ? ● PostgreSQL, SQLite ● SQL Server, Azure ● Oracle, DB2
  • 15. Stockages de données > NoSQL •MongoDB •CouchDB, Riak •Redis •Tokyo / Kyoto •Les autres Adapter la techno aux données : •REDIS → Analytics, not logging •MongoDB → Flow, not transactions
  • 16. Stockages de données > Quelles données NoSQL •D6 •Sessions, logs •D7 •Field Storage, Lock, Queue •Découpler les queues •D8 •Entity, File
  • 17. Chargements & affichages des pages > Paralléliser les téléchargements •CDN (URL sharding) Page affichée Page affichée site.com HTML site.com HTML site.com CSS static1.site.com CSS JS Image CSS CSS site.com static2.site.com CSS JS Image JS CDN JS - URL site.com static3.site.com CSS Image Sharding Image Image Image Temps Temps
  • 18. Chargements & affichages des pages > Profiter un maximum du cache navigateur • CDN (far future) • Tant que l’agrégat CSS et/ou JS n'a pas changé, ne pas le recharger ! • Idem pour les images et autres ressources statiques !
  • 19. Chargements & affichages des pages > Upload de cookie & ressources statiques • Une image, un fichier CSS, ou bien un fichier JS ne doivent pas nécessiter d'information relative a l'utilisateur. • Sur une connexion DSL standard, un cookie de 500 octets fait perdre environ une milliseconde par requête (100 images, 100 requêtes => 100 millisecondes de perdu) Module CDN & URL Sharding + $cookie_domain (settings.php) sur le domaine principal = Des domaines (pour les ressources statiques) sans cookies !
  • 20. Chargements & affichages des pages > Les JavaScripts, tendances & bloquants ! • De plus en plus de JavaScripts sont utilisés • Le chargement d'un JavaScript est bloquant Page affichée Page affichée site.com HTML site.com HTML static1.site.com CSS JS Image static1.site.com CSS JS Image static2.site.com CSS JS Image static2.site.com CSS JS Head.js (ou Lab.js) Image static3.site.com CSS Image static3.site.com CSS Image Temps Temps
  • 21. Cache des pages & ressources > Varnish ● Anonymes vs authentifiés ● Expiration vs invalidation ● ESI
  • 22. Analyse : caches Snapshot control ● APC control panel ● Memcache ● control panel ● Drupal memcache_admin ● phpmemcacheadmin ● History / baseline ● Munin, ... ● SaaS : NewRelic ● Events : Nagios, ...
  • 23. Analyse : code = Profiling - XDebug & KcacheGrind - Zend Profiler - XHProf * avantages / limitations * modules devel, xhprof
  • 24. Analyses : système d'exploitation > strace • syscall trace : observer les appels système > Dtrace • Solaris • Observer tout dans le système
  • 25. Analyses : base de données > Snapshots • relever les compteurs: phpmyadmin > Logging • Enregistrement • mysql slow queries • Percona vs Oracle • Munin... • Anemometer
  • 26. Analyses : black box ou white box ? > tcpdump & wireshark • Observer les flux > grep, IDE • Observer les sources
  • 28. Analyses > YSlow & Google Pagespeed
  • 29. Analyses > Firebug & Chrome inspector & Dragon Fly (;))
  • 31. Merci !! Des questions ?:) Retrouvez cette présentation sur Slideshare, cherchez skilld_fr, jbguerraz ou osinet