Drupagora 2012 Optimisation performances Drupal
Upcoming SlideShare
Loading in...5
×
 

Drupagora 2012 Optimisation performances Drupal

on

  • 2,611 views

Optimisation des performances Drupal (Drupagora 2012)

Optimisation des performances Drupal (Drupagora 2012)

Statistics

Views

Total Views
2,611
Views on SlideShare
2,589
Embed Views
22

Actions

Likes
1
Downloads
55
Comments
1

2 Embeds 22

https://twitter.com 21
http://atafu.travelcom.michelin-travel.com 1

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • That was a very good performance by JB. It gave me much understanding of some optimization technics. Also, I would like to add that one of the most important keys of optimization is 'doing things properly and lean' instead of 'trying to find similar modules and then modify their behavior'. The Drupal Lean development will elliminate many overwhelmings which usualy become a reason of loosing performance.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Drupagora 2012 Optimisation performances Drupal Drupagora 2012 Optimisation performances Drupal Presentation Transcript

  • Drupal Optimisation des performancesPar Jean-Baptiste Guerraz (@skilld_fr) & Frédéric Marand (@OSInet)
  • « Frédéric, gérantOSInet, est spécialisédans la sécurité et leshautes performancesDrupal. »
  • « Jean-Baptiste,directeur technique deSkilld, est spécialisé dansla gestion technique desprojets Drupal & mobileperformants »
  • Desserrez les freins !• « Le cache » de • PHP Drupal – 5.3 – Drupal 6 – 5.4 • Agressif ? • Cache dopcodes – 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 APCExé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 daccé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 nest pas une base...
  • Du cache pour PHP & Drupal> Décharger MySQL : cacher en base ? ● MongoDB ● REDIS ● MySQL !
  • URLOptimiser 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 dimage 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 JSCSS & 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> MySQLEt les autres ?● PostgreSQL, SQLite● SQL Server, Azure● Oracle, DB2
  • Stockages de données> NoSQL •MongoDB •CouchDB, Riak •Redis •Tokyo / Kyoto •Les autresAdapter 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éesite.com HTML site.com HTMLsite.com CSS static1.site.com CSS JS Image CSS CSSsite.com static2.site.com CSS JS Image JS CDN JS - URLsite.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 na 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 dinformation relative a lutilisateur. • 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 dun JavaScript est bloquant Page affichée Page affichéesite.com HTML site.com HTMLstatic1.site.com CSS JS Image static1.site.com CSS JS Imagestatic2.site.com CSS JS Image static2.site.com CSS JS Head.js (ou Lab.js) Imagestatic3.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 : cachesSnapshot 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 dexploitation> 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