SlideShare une entreprise Scribd logo
1  sur  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
Drupal
– Drupal 6
• Agressif ?

– Drupal 7
• RTFS(ettings.php)

• PHP
– 5.3
– 5.4

• Cache d'opcodes
– APC
– Zend cache
– Xcache
– EAccelerator
Du cache pour PHP & Drupal
> Décharger PHP
• APC
Requête

Requête

Lecture Opcodes
dans APC

Compilation PHP
APC

HIT

MISS

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
• 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...

Temps de réponse
(ms)
Du cache pour PHP & Drupal
> Décharger MySQL :
cacher en base ?
MongoDB
●
REDIS
●
MySQL !
●
URL

Optimiser les images
> External cache
• Une image externe = une image
comme une autre

Imagecache
External

Image

Image

(pas de résolution de domaine supplémentaire)
Image / Image Cache

> Image cache
• Une taille = une image
(pas de redimension via JS / CSS)

Image

> Optimize
• Une image = une image optimisée
en poids

Image

Image

Image

Image Optimize

(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

Image Image Image

Image Image Image

Sprites

Image Image
Sprite
Image Image Image
Image Image

CSS

CSS Embed Images

CSS

Image Image
Image

CSS

Image

Image Image
CSS & JavaScript
> Minimiser le nombre de requêtes
•Agréger
•Core aggregates
•Core library
•Advanced Aggregates
(D7 en cours de portage)

CSS

CSS

CSS

JS

JS

JS

CSS

CSS

CSS

JS

JS

JS

JS

JS

Core aggregates

CSS

> Minimiser le poids des fichiers
•Minifier
• Core library (JS only)
•JSMin / CSS Compressor (JSMin+ / CSS
Tidy)
•Advanced Aggregates
(D7 en cours de portage)
•Compresser
•Core aggregates
•Nginx / Apache
•Advanced Aggregates
(D7 en cours de portage)

CSS

CSS Compressor / JSMin

CSS

CSS

JS

JS

Core aggregates compress

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
site.com
site.com

Page affichée
site.com

HTML

HTML

static1.site.com

CSS

CSS

static2.site.com

CSS

static3.site.com

CSS

JS

Image

CSS
CSS

site.com

CDN
URL
Sharding

JS
JS

site.com

Image

JS

Image

Image
Image

Temps

Image

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

site.com

HTML

static1.site.com

CSS

JS

HTML

static1.site.com

Image

CSS

JS

Image

static2.site.com

CSS

JS

Image

Head.js
(ou Lab.js)
static3.site.com

CSS

static2.site.com

CSS
Image

Image

static3.site.com

CSS
Image

Temps

Temps

JS
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

Contenu connexe

Tendances

Infrastructure as a code
Infrastructure as a codeInfrastructure as a code
Infrastructure as a codeMichel HUBERT
 
Meetup Drupal Lyon - Sécuriser un site drupal
Meetup Drupal Lyon - Sécuriser un site drupalMeetup Drupal Lyon - Sécuriser un site drupal
Meetup Drupal Lyon - Sécuriser un site drupalAurelien Navarre
 
Guss sql IaaS PaaS 20131202
Guss sql IaaS PaaS 20131202Guss sql IaaS PaaS 20131202
Guss sql IaaS PaaS 20131202Julien Plée
 
Optimiser WordPress
Optimiser WordPressOptimiser WordPress
Optimiser WordPressChi Nacim
 
Toutes les raisons d'adopter MongoDB
Toutes les raisons d'adopter MongoDBToutes les raisons d'adopter MongoDB
Toutes les raisons d'adopter MongoDBContent Square
 
Industrialiser la gestion des fichiers multimedia #dcparis13
Industrialiser la gestion des fichiers multimedia #dcparis13Industrialiser la gestion des fichiers multimedia #dcparis13
Industrialiser la gestion des fichiers multimedia #dcparis13Aurelien Navarre
 
MongoDB day Paris 2012
MongoDB day Paris 2012MongoDB day Paris 2012
MongoDB day Paris 2012FastConnect
 
Scalabilité de MongoDB
Scalabilité de MongoDBScalabilité de MongoDB
Scalabilité de MongoDBMongoDB
 
DrupalCamp Lyon 2012 - Optimiser les performances Drupal depuis les tranchées
DrupalCamp Lyon 2012 -  Optimiser les performances Drupal depuis les tranchéesDrupalCamp Lyon 2012 -  Optimiser les performances Drupal depuis les tranchées
DrupalCamp Lyon 2012 - Optimiser les performances Drupal depuis les tranchéesAurelien Navarre
 
Optimiser WordPress – Checklist après installation
Optimiser WordPress – Checklist après installationOptimiser WordPress – Checklist après installation
Optimiser WordPress – Checklist après installationFabrice Ducarme
 
Webperf Front-End SeoCampus 2012
Webperf Front-End SeoCampus 2012Webperf Front-End SeoCampus 2012
Webperf Front-End SeoCampus 2012Refficience
 
De la DB à la DB-as-a-Service : avantages, limites et étapes pour franchir l...
De la DB à la DB-as-a-Service : avantages, limites et étapes pour franchir l...De la DB à la DB-as-a-Service : avantages, limites et étapes pour franchir l...
De la DB à la DB-as-a-Service : avantages, limites et étapes pour franchir l...Scaleway
 
Cloud Azure – Services de données et bonnes pratiques
Cloud Azure – Services de données et bonnes pratiquesCloud Azure – Services de données et bonnes pratiques
Cloud Azure – Services de données et bonnes pratiquesMicrosoft
 
agoraCMS - WordPress, thèmes et plugins : mode d'emploi
agoraCMS - WordPress, thèmes et plugins : mode d'emploiagoraCMS - WordPress, thèmes et plugins : mode d'emploi
agoraCMS - WordPress, thèmes et plugins : mode d'emploiLionel Pointet
 

Tendances (20)

Infrastructure as a code
Infrastructure as a codeInfrastructure as a code
Infrastructure as a code
 
WordPress et le SEO
WordPress et le SEOWordPress et le SEO
WordPress et le SEO
 
Meetup Drupal Lyon - Sécuriser un site drupal
Meetup Drupal Lyon - Sécuriser un site drupalMeetup Drupal Lyon - Sécuriser un site drupal
Meetup Drupal Lyon - Sécuriser un site drupal
 
Guss sql IaaS PaaS 20131202
Guss sql IaaS PaaS 20131202Guss sql IaaS PaaS 20131202
Guss sql IaaS PaaS 20131202
 
Optimiser wordpress
Optimiser wordpressOptimiser wordpress
Optimiser wordpress
 
Optimiser WordPress
Optimiser WordPressOptimiser WordPress
Optimiser WordPress
 
Toutes les raisons d'adopter MongoDB
Toutes les raisons d'adopter MongoDBToutes les raisons d'adopter MongoDB
Toutes les raisons d'adopter MongoDB
 
Talk performance web
Talk performance webTalk performance web
Talk performance web
 
Industrialiser la gestion des fichiers multimedia #dcparis13
Industrialiser la gestion des fichiers multimedia #dcparis13Industrialiser la gestion des fichiers multimedia #dcparis13
Industrialiser la gestion des fichiers multimedia #dcparis13
 
Haute Disponibilité et Disaster Recovery
Haute Disponibilité et Disaster RecoveryHaute Disponibilité et Disaster Recovery
Haute Disponibilité et Disaster Recovery
 
MongoDB day Paris 2012
MongoDB day Paris 2012MongoDB day Paris 2012
MongoDB day Paris 2012
 
WordPress Jurassique
WordPress JurassiqueWordPress Jurassique
WordPress Jurassique
 
Scalabilité de MongoDB
Scalabilité de MongoDBScalabilité de MongoDB
Scalabilité de MongoDB
 
Drupal Performance
Drupal PerformanceDrupal Performance
Drupal Performance
 
DrupalCamp Lyon 2012 - Optimiser les performances Drupal depuis les tranchées
DrupalCamp Lyon 2012 -  Optimiser les performances Drupal depuis les tranchéesDrupalCamp Lyon 2012 -  Optimiser les performances Drupal depuis les tranchées
DrupalCamp Lyon 2012 - Optimiser les performances Drupal depuis les tranchées
 
Optimiser WordPress – Checklist après installation
Optimiser WordPress – Checklist après installationOptimiser WordPress – Checklist après installation
Optimiser WordPress – Checklist après installation
 
Webperf Front-End SeoCampus 2012
Webperf Front-End SeoCampus 2012Webperf Front-End SeoCampus 2012
Webperf Front-End SeoCampus 2012
 
De la DB à la DB-as-a-Service : avantages, limites et étapes pour franchir l...
De la DB à la DB-as-a-Service : avantages, limites et étapes pour franchir l...De la DB à la DB-as-a-Service : avantages, limites et étapes pour franchir l...
De la DB à la DB-as-a-Service : avantages, limites et étapes pour franchir l...
 
Cloud Azure – Services de données et bonnes pratiques
Cloud Azure – Services de données et bonnes pratiquesCloud Azure – Services de données et bonnes pratiques
Cloud Azure – Services de données et bonnes pratiques
 
agoraCMS - WordPress, thèmes et plugins : mode d'emploi
agoraCMS - WordPress, thèmes et plugins : mode d'emploiagoraCMS - WordPress, thèmes et plugins : mode d'emploi
agoraCMS - WordPress, thèmes et plugins : mode d'emploi
 

En vedette

Manual do pedal Mooer MCS1 Blue Comp (PORTUGUÊS)
Manual do pedal Mooer MCS1 Blue Comp (PORTUGUÊS)Manual do pedal Mooer MCS1 Blue Comp (PORTUGUÊS)
Manual do pedal Mooer MCS1 Blue Comp (PORTUGUÊS)Habro Group
 
Agusta westland 169 AAS (armed aerial scout), United States of America
Agusta westland 169 AAS (armed aerial scout), United States of AmericaAgusta westland 169 AAS (armed aerial scout), United States of America
Agusta westland 169 AAS (armed aerial scout), United States of Americahindujudaic
 
Preso ideenwet gr 20_07_2010
Preso ideenwet gr 20_07_2010Preso ideenwet gr 20_07_2010
Preso ideenwet gr 20_07_2010Harald Fratz
 
Bomba de Disco Excêntrico Mouvex X Bomba de Pistão Circunferencial Waukesha
Bomba de Disco Excêntrico Mouvex X Bomba de Pistão Circunferencial WaukeshaBomba de Disco Excêntrico Mouvex X Bomba de Pistão Circunferencial Waukesha
Bomba de Disco Excêntrico Mouvex X Bomba de Pistão Circunferencial Waukeshabombastetralon
 
Desenvolvimento Experimental De Um Sistema de Refrigeração Inteligente
Desenvolvimento Experimental De Um Sistema de Refrigeração InteligenteDesenvolvimento Experimental De Um Sistema de Refrigeração Inteligente
Desenvolvimento Experimental De Um Sistema de Refrigeração Inteligenteadrianobatista.bh
 
Compressor isento de óleo
Compressor isento de óleoCompressor isento de óleo
Compressor isento de óleojcmora01
 
Comparativo Bomba de Disco Excêntrico Mouvex X Bomba Helicoidal Netzsch
Comparativo Bomba de Disco Excêntrico Mouvex X Bomba Helicoidal NetzschComparativo Bomba de Disco Excêntrico Mouvex X Bomba Helicoidal Netzsch
Comparativo Bomba de Disco Excêntrico Mouvex X Bomba Helicoidal Netzschbombastetralon
 
Présentation du user group Duchess France au GDG de Nantes
Présentation du user group Duchess France au GDG de NantesPrésentation du user group Duchess France au GDG de Nantes
Présentation du user group Duchess France au GDG de NantesClaude Falguiere
 
1) all. classi di concorso triennio scolastico 2014-2017
1) all.   classi di concorso triennio scolastico 2014-20171) all.   classi di concorso triennio scolastico 2014-2017
1) all. classi di concorso triennio scolastico 2014-2017ferrerdavo
 
State of E-Commerce 2013
State of E-Commerce 2013State of E-Commerce 2013
State of E-Commerce 2013Carpathia AG
 
Андрей Светлов. Расширение механизма импорта в Питоне
Андрей Светлов. Расширение механизма импорта в ПитонеАндрей Светлов. Расширение механизма импорта в Питоне
Андрей Светлов. Расширение механизма импорта в Питонеotkds
 
Comparativo Bomba de Disco Excêntrico Mouvex X Bomba Lobular
Comparativo Bomba de Disco Excêntrico Mouvex X Bomba LobularComparativo Bomba de Disco Excêntrico Mouvex X Bomba Lobular
Comparativo Bomba de Disco Excêntrico Mouvex X Bomba Lobularbombastetralon
 
Fish meal feed replacement for the aquaculture with insect meal
Fish meal feed replacement for the aquaculture with insect mealFish meal feed replacement for the aquaculture with insect meal
Fish meal feed replacement for the aquaculture with insect mealJuliet Abisha
 
Equipamentos utilizados no transporte de fluidos
Equipamentos utilizados no transporte de fluidos Equipamentos utilizados no transporte de fluidos
Equipamentos utilizados no transporte de fluidos Ingrid Bispo
 
Montagem de compressor
Montagem de compressorMontagem de compressor
Montagem de compressorMarco Coghi
 

En vedette (20)

Manual do pedal Mooer MCS1 Blue Comp (PORTUGUÊS)
Manual do pedal Mooer MCS1 Blue Comp (PORTUGUÊS)Manual do pedal Mooer MCS1 Blue Comp (PORTUGUÊS)
Manual do pedal Mooer MCS1 Blue Comp (PORTUGUÊS)
 
Agusta westland 169 AAS (armed aerial scout), United States of America
Agusta westland 169 AAS (armed aerial scout), United States of AmericaAgusta westland 169 AAS (armed aerial scout), United States of America
Agusta westland 169 AAS (armed aerial scout), United States of America
 
Apple Compressor Webinar
Apple Compressor WebinarApple Compressor Webinar
Apple Compressor Webinar
 
Preso ideenwet gr 20_07_2010
Preso ideenwet gr 20_07_2010Preso ideenwet gr 20_07_2010
Preso ideenwet gr 20_07_2010
 
Bomba de Disco Excêntrico Mouvex X Bomba de Pistão Circunferencial Waukesha
Bomba de Disco Excêntrico Mouvex X Bomba de Pistão Circunferencial WaukeshaBomba de Disco Excêntrico Mouvex X Bomba de Pistão Circunferencial Waukesha
Bomba de Disco Excêntrico Mouvex X Bomba de Pistão Circunferencial Waukesha
 
Desenvolvimento Experimental De Um Sistema de Refrigeração Inteligente
Desenvolvimento Experimental De Um Sistema de Refrigeração InteligenteDesenvolvimento Experimental De Um Sistema de Refrigeração Inteligente
Desenvolvimento Experimental De Um Sistema de Refrigeração Inteligente
 
Compressor isento de óleo
Compressor isento de óleoCompressor isento de óleo
Compressor isento de óleo
 
Comparativo Bomba de Disco Excêntrico Mouvex X Bomba Helicoidal Netzsch
Comparativo Bomba de Disco Excêntrico Mouvex X Bomba Helicoidal NetzschComparativo Bomba de Disco Excêntrico Mouvex X Bomba Helicoidal Netzsch
Comparativo Bomba de Disco Excêntrico Mouvex X Bomba Helicoidal Netzsch
 
Présentation du user group Duchess France au GDG de Nantes
Présentation du user group Duchess France au GDG de NantesPrésentation du user group Duchess France au GDG de Nantes
Présentation du user group Duchess France au GDG de Nantes
 
06b compressores
06b compressores06b compressores
06b compressores
 
1) all. classi di concorso triennio scolastico 2014-2017
1) all.   classi di concorso triennio scolastico 2014-20171) all.   classi di concorso triennio scolastico 2014-2017
1) all. classi di concorso triennio scolastico 2014-2017
 
State of E-Commerce 2013
State of E-Commerce 2013State of E-Commerce 2013
State of E-Commerce 2013
 
Cpx dlw 2008
Cpx dlw 2008Cpx dlw 2008
Cpx dlw 2008
 
Андрей Светлов. Расширение механизма импорта в Питоне
Андрей Светлов. Расширение механизма импорта в ПитонеАндрей Светлов. Расширение механизма импорта в Питоне
Андрей Светлов. Расширение механизма импорта в Питоне
 
Ivry Diaporama Intervention Jean Jouzel
Ivry Diaporama Intervention Jean JouzelIvry Diaporama Intervention Jean Jouzel
Ivry Diaporama Intervention Jean Jouzel
 
CAPITULO 6
CAPITULO 6CAPITULO 6
CAPITULO 6
 
Comparativo Bomba de Disco Excêntrico Mouvex X Bomba Lobular
Comparativo Bomba de Disco Excêntrico Mouvex X Bomba LobularComparativo Bomba de Disco Excêntrico Mouvex X Bomba Lobular
Comparativo Bomba de Disco Excêntrico Mouvex X Bomba Lobular
 
Fish meal feed replacement for the aquaculture with insect meal
Fish meal feed replacement for the aquaculture with insect mealFish meal feed replacement for the aquaculture with insect meal
Fish meal feed replacement for the aquaculture with insect meal
 
Equipamentos utilizados no transporte de fluidos
Equipamentos utilizados no transporte de fluidos Equipamentos utilizados no transporte de fluidos
Equipamentos utilizados no transporte de fluidos
 
Montagem de compressor
Montagem de compressorMontagem de compressor
Montagem de compressor
 

Similaire à Drupagora 2012 Optimisation performances Drupal

Drupagora 2012 Optimisation performances Drupal
Drupagora 2012 Optimisation performances DrupalDrupagora 2012 Optimisation performances Drupal
Drupagora 2012 Optimisation performances DrupalJean-Baptiste Guerraz
 
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
 
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
 
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
 
Le SEO JavaScript démystifié
Le SEO JavaScript démystifiéLe SEO JavaScript démystifié
Le SEO JavaScript démystifiéAdrien Russo
 
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
 
Monter des environnements dev test efficaces avec Windows Azure
Monter des environnements dev test efficaces avec Windows AzureMonter des environnements dev test efficaces avec Windows Azure
Monter des environnements dev test efficaces avec Windows AzureMicrosoft Technet France
 
Azure Camp 9 Décembre 2014 - slides Keynote
Azure Camp 9 Décembre 2014 - slides KeynoteAzure Camp 9 Décembre 2014 - slides Keynote
Azure Camp 9 Décembre 2014 - slides KeynoteMicrosoft
 
Performances Web Mobile
Performances Web MobilePerformances Web Mobile
Performances Web MobileWilly Leloutre
 
JSS2014 – Azure SQL Database : 1 an après
JSS2014 – Azure SQL Database : 1 an aprèsJSS2014 – Azure SQL Database : 1 an après
JSS2014 – Azure SQL Database : 1 an aprèsGUSS
 
Meetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cache
Meetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cacheMeetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cache
Meetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cacheAurelien Navarre
 
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
 
Au cœur du Framework .NET 4.5.1
Au cœur du Framework .NET 4.5.1Au cœur du Framework .NET 4.5.1
Au cœur du Framework .NET 4.5.1Microsoft
 
La mise en cache et ses secrets
La mise en cache et ses secretsLa mise en cache et ses secrets
La mise en cache et ses secretsAymeric Bouillat
 
Inclure du Javascript de manière performante
Inclure du Javascript de manière performanteInclure du Javascript de manière performante
Inclure du Javascript de manière performanteJean-Pierre Vincent
 
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
 
Quick-wins pour accélérer son site web - seo camp day lorraine 2018
Quick-wins pour accélérer son site web - seo camp day lorraine 2018Quick-wins pour accélérer son site web - seo camp day lorraine 2018
Quick-wins pour accélérer son site web - seo camp day lorraine 2018Aymen Loukil
 
Les défis d’une application mobile multi-périphériques avec HTML5
Les défis d’une application mobile multi-périphériques avec HTML5Les défis d’une application mobile multi-périphériques avec HTML5
Les défis d’une application mobile multi-périphériques avec HTML5davrous
 
Kiwiparty 2011 - Optimisation des sites internet
Kiwiparty 2011 - Optimisation des sites internetKiwiparty 2011 - Optimisation des sites internet
Kiwiparty 2011 - Optimisation des sites internetDevclic
 

Similaire à 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
 
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
 
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
 
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
 
Le SEO JavaScript démystifié
Le SEO JavaScript démystifiéLe SEO JavaScript démystifié
Le SEO JavaScript démystifié
 
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
 
Monter des environnements dev test efficaces avec Windows Azure
Monter des environnements dev test efficaces avec Windows AzureMonter des environnements dev test efficaces avec Windows Azure
Monter des environnements dev test efficaces avec Windows Azure
 
Azure Camp 9 Décembre 2014 - slides Keynote
Azure Camp 9 Décembre 2014 - slides KeynoteAzure Camp 9 Décembre 2014 - slides Keynote
Azure Camp 9 Décembre 2014 - slides Keynote
 
La performance sur mobile
La performance sur mobileLa performance sur mobile
La performance sur mobile
 
Performances Web Mobile
Performances Web MobilePerformances Web Mobile
Performances Web Mobile
 
JSS2014 – Azure SQL Database : 1 an après
JSS2014 – Azure SQL Database : 1 an aprèsJSS2014 – Azure SQL Database : 1 an après
JSS2014 – Azure SQL Database : 1 an après
 
Meetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cache
Meetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cacheMeetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cache
Meetup Drupal Lyon mars 2013 - Optimiser les performances Drupal par le cache
 
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]
 
Au cœur du Framework .NET 4.5.1
Au cœur du Framework .NET 4.5.1Au cœur du Framework .NET 4.5.1
Au cœur du Framework .NET 4.5.1
 
La mise en cache et ses secrets
La mise en cache et ses secretsLa mise en cache et ses secrets
La mise en cache et ses secrets
 
Inclure du Javascript de manière performante
Inclure du Javascript de manière performanteInclure du Javascript de manière performante
Inclure du Javascript de manière performante
 
Ma participation au WebPerf Contest 2010
Ma participation au WebPerf Contest 2010Ma participation au WebPerf Contest 2010
Ma participation au WebPerf Contest 2010
 
Quick-wins pour accélérer son site web - seo camp day lorraine 2018
Quick-wins pour accélérer son site web - seo camp day lorraine 2018Quick-wins pour accélérer son site web - seo camp day lorraine 2018
Quick-wins pour accélérer son site web - seo camp day lorraine 2018
 
Les défis d’une application mobile multi-périphériques avec HTML5
Les défis d’une application mobile multi-périphériques avec HTML5Les défis d’une application mobile multi-périphériques avec HTML5
Les défis d’une application mobile multi-périphériques avec HTML5
 
Kiwiparty 2011 - Optimisation des sites internet
Kiwiparty 2011 - Optimisation des sites internetKiwiparty 2011 - Optimisation des sites internet
Kiwiparty 2011 - Optimisation des sites internet
 

Plus de 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
 

Plus de 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 Drupal – Drupal 6 • Agressif ? – Drupal 7 • RTFS(ettings.php) • PHP – 5.3 – 5.4 • Cache d'opcodes – APC – Zend cache – Xcache – EAccelerator
  • 5. Du cache pour PHP & Drupal > Décharger PHP • APC Requête Requête Lecture Opcodes dans APC Compilation PHP APC HIT MISS 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 • 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... Temps de réponse (ms)
  • 10. Du cache pour PHP & Drupal > Décharger MySQL : cacher en base ? MongoDB ● REDIS ● MySQL ! ●
  • 11. URL Optimiser les images > External cache • Une image externe = une image comme une autre Imagecache External Image Image (pas de résolution de domaine supplémentaire) Image / Image Cache > Image cache • Une taille = une image (pas de redimension via JS / CSS) Image > Optimize • Une image = une image optimisée en poids Image Image Image Image Optimize (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 Image Image Image Image Image Image Sprites Image Image Sprite Image Image Image Image Image CSS CSS Embed Images CSS Image Image Image CSS Image Image Image
  • 13. CSS & JavaScript > Minimiser le nombre de requêtes •Agréger •Core aggregates •Core library •Advanced Aggregates (D7 en cours de portage) CSS CSS CSS JS JS JS CSS CSS CSS JS JS JS JS JS Core aggregates CSS > Minimiser le poids des fichiers •Minifier • Core library (JS only) •JSMin / CSS Compressor (JSMin+ / CSS Tidy) •Advanced Aggregates (D7 en cours de portage) •Compresser •Core aggregates •Nginx / Apache •Advanced Aggregates (D7 en cours de portage) CSS CSS Compressor / JSMin CSS CSS JS JS Core aggregates compress 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 site.com site.com Page affichée site.com HTML HTML static1.site.com CSS CSS static2.site.com CSS static3.site.com CSS JS Image CSS CSS site.com CDN URL Sharding JS JS site.com Image JS Image Image Image Temps Image 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 site.com HTML static1.site.com CSS JS HTML static1.site.com Image CSS JS Image static2.site.com CSS JS Image Head.js (ou Lab.js) static3.site.com CSS static2.site.com CSS Image Image static3.site.com CSS Image Temps Temps JS
  • 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
  • 31. Merci !! Des questions ?:) Retrouvez cette présentation sur Slideshare, cherchez skilld_fr, jbguerraz ou osinet