2. Drupal
Petit trait´ de performances ` l’usage de tous
e a
Int´grateur, architecte, d´veloppeur, tous concern´s
e e e
Pierre Rineau
Makina Corpus
pierre.rineau@makina-corpus.com
Janvier 2011
MAKINA
CORPUS
3. Petite introduction
Les causes ´videntes
e
D´tails et solutions
e
Et pour finir
Synopsis
L’API grandissante de Drupal et la multiplication de nouvelles
fonctionnalit´s g´n`rent de plus en plus de sites ”´l´phantesques”. La
e e e ee
r´activit´ d’un site, dans le monde du web, est un domaine critique qui
e e
concerne tous les intervenants. Travail pr´par´ en amont par le
e e
d´veloppeur, cet aspect n´c´ssite d’ˆtre pr´sent dans l’esprit de
e e e e e
l’int´grateur et doit ˆtre maˆ e par les administrateurs syst`me. Cette
e e ıtris´ e
session ` pour but de pr´senter la toile d’araign´e et les r´actions en chaˆ
a e e e ıne
provoqu´es dans un contexte ou ces trois rˆles s’ignorent.
e o
P. Rineau Petit trait´ de performances ` l’usage de tous
e a
4. Sommaire
1 Petite introduction
2 Les causes ´videntes
e
3 D´tails et solutions
e
4 Et pour finir
5. Petite introduction
Les causes ´videntes
e Drupal ?
D´tails et solutions
e Rˆles et probl´matique
o e
Et pour finir
Qu’est ce que Drupal ?
P. Rineau Petit trait´ de performances ` l’usage de tous
e a
6. Petite introduction
Les causes ´videntes
e Drupal ?
D´tails et solutions
e Rˆles et probl´matique
o e
Et pour finir
Qu’est ce que Drupal ?
Sur http://drupal.org :
Drupal is an open source content management platform
powering millions of websites and applications.
Sur http://acquia.com/what-is-drupal :
Tens of thousands of people and organizations have used
Drupal to power scores of different web sites, including
community web portals, corporate web sites, social networking
sites, personal web sites or blogs, and much more.
P. Rineau Petit trait´ de performances ` l’usage de tous
e a
7. Petite introduction
Les causes ´videntes
e Drupal ?
D´tails et solutions
e Rˆles et probl´matique
o e
Et pour finir
Forces mais faiblesses
• Tr`s fort dynamisme
e
• Le hook : alt´ration VS extention
e
• Un m´tier d´laiss´, r´cup´r´ par les modules
e e e e ee
• Des utilisation h´t´roclites : blog, e-commerce, social networking
e e
P. Rineau Petit trait´ de performances ` l’usage de tous
e a
8. Petite introduction
Les causes ´videntes
e Drupal ?
D´tails et solutions
e Rˆles et probl´matique
o e
Et pour finir
Le d´veloppeur
e
• D´veloppe souvent pour un
e
seul cas d’utilisation
• Ne connaˆ pas qui va utiliser
ıt
son produit
• Documente peu
P. Rineau Petit trait´ de performances ` l’usage de tous
e a
9. Petite introduction
Les causes ´videntes
e Drupal ?
D´tails et solutions
e Rˆles et probl´matique
o e
Et pour finir
L’int´grateur
e
• Utilise le travail de multiple
d´veloppeurs
e
• Ne voit que la partie ´merg´e
e e
de l’iceberg
• On lui demande souvent d’ˆtre
e
architecte logiciel
P. Rineau Petit trait´ de performances ` l’usage de tous
e a
10. Petite introduction
Les causes ´videntes
e Drupal ?
D´tails et solutions
e Rˆles et probl´matique
o e
Et pour finir
L’architecte syst`me
e
• R´cup`re le travail de
e e
l’int´grateur
e
• Introduit des contraintes
nouvelles, souvent a posteriori
• Doit maˆ
ıtriser le scaling d’une
plateforme parmis tant
d’autres
P. Rineau Petit trait´ de performances ` l’usage de tous
e a
11. Petite introduction
Les causes ´videntes
e ´
Echelle
D´tails et solutions
e Abstraction
Et pour finir
L’´chelle d’un module
e
P. Rineau Petit trait´ de performances ` l’usage de tous
e a
12. Petite introduction
Les causes ´videntes
e ´
Echelle
D´tails et solutions
e Abstraction
Et pour finir
L’abstraction
Ce que con¸oit le d´veloppeur :
c e
P. Rineau Petit trait´ de performances ` l’usage de tous
e a
13. Petite introduction
Les causes ´videntes
e ´
Echelle
D´tails et solutions
e Abstraction
Et pour finir
L’abstraction
Ce qu’utilise l’int´grateur :
e
Le r´sultat !
e
P. Rineau Petit trait´ de performances ` l’usage de tous
e a
14. Un GROS goulot : la base de donn´es
e
Petite introduction
La gestion des caches
Les causes ´videntes
e
Connaˆ son ennemi: L’environnement
ıtre
D´tails et solutions
e
Connaˆ son ennemi: Les mauvais patterns
ıtre
Et pour finir
Connaˆ son ennemi: Le manque de connaissance
ıtre
Le SQL
• Drupal, usine ` requˆtes
a e
• Schema dispers´ et API non centralis´e
e e
• Des modules contraints au hack
P. Rineau Petit trait´ de performances ` l’usage de tous
e a
15. Un GROS goulot : la base de donn´es
e
Petite introduction
La gestion des caches
Les causes ´videntes
e
Connaˆ son ennemi: L’environnement
ıtre
D´tails et solutions
e
Connaˆ son ennemi: Les mauvais patterns
ıtre
Et pour finir
Connaˆ son ennemi: Le manque de connaissance
ıtre
Le SQL : des solutions
• D´veloppeurs, ´vitez les requˆtes inutiles
e e e
• D´veloppeurs toujours, utilisez des caches
e
• Int´grateurs, connaissez les modules!
e
• Architectes, pensez ` activer les caches
a
P. Rineau Petit trait´ de performances ` l’usage de tous
e a
16. Un GROS goulot : la base de donn´es
e
Petite introduction
La gestion des caches
Les causes ´videntes
e
Connaˆ son ennemi: L’environnement
ıtre
D´tails et solutions
e
Connaˆ son ennemi: Les mauvais patterns
ıtre
Et pour finir
Connaˆ son ennemi: Le manque de connaissance
ıtre
MySQL Vs. PostgreSQL
MySQL, un grand gourmand! PostgreSQL, le poids de l’exp´rience.
e
P. Rineau Petit trait´ de performances ` l’usage de tous
e a
17. Un GROS goulot : la base de donn´es
e
Petite introduction
La gestion des caches
Les causes ´videntes
e
Connaˆ son ennemi: L’environnement
ıtre
D´tails et solutions
e
Connaˆ son ennemi: Les mauvais patterns
ıtre
Et pour finir
Connaˆ son ennemi: Le manque de connaissance
ıtre
Cache binaire : concept
Normalisation VS S´rialisation
e
P. Rineau Petit trait´ de performances ` l’usage de tous
e a
18. Un GROS goulot : la base de donn´es
e
Petite introduction
La gestion des caches
Les causes ´videntes
e
Connaˆ son ennemi: L’environnement
ıtre
D´tails et solutions
e
Connaˆ son ennemi: Les mauvais patterns
ıtre
Et pour finir
Connaˆ son ennemi: Le manque de connaissance
ıtre
Cache binaire : utilit´
e
´
SOULAGER LA BASE DE DONNEE
Non sans constraintes, ne pas r´petez les mˆmes erreurs :
e e
• Pensez aux I/O
• Pensez latence
P. Rineau Petit trait´ de performances ` l’usage de tous
e a
19. Un GROS goulot : la base de donn´es
e
Petite introduction
La gestion des caches
Les causes ´videntes
e
Connaˆ son ennemi: L’environnement
ıtre
D´tails et solutions
e
Connaˆ son ennemi: Les mauvais patterns
ıtre
Et pour finir
Connaˆ son ennemi: Le manque de connaissance
ıtre
Les caches et de le d´veloppeur
e
La responsabilit´ du d´veloppeur : mettre en place les caches
e e
• De multiple niveaux : des des caches diff´renti´s
e e
Plusieurs facteurs de s´paration logique des donn´es :
e e
• Criticit´ (fr´quence d’acc`s)
e e e
• Volum´trie (taille des ´l´ments)
e ee
P. Rineau Petit trait´ de performances ` l’usage de tous
e a
20. Un GROS goulot : la base de donn´es
e
Petite introduction
La gestion des caches
Les causes ´videntes
e
Connaˆ son ennemi: L’environnement
ıtre
D´tails et solutions
e
Connaˆ son ennemi: Les mauvais patterns
ıtre
Et pour finir
Connaˆ son ennemi: Le manque de connaissance
ıtre
Les caches et l’architecte
La r´sponsabilit´ de l’architecte : bien les utiliser
e e
• Connaˆ
ıtre les diff´rents niveaux
e
• Et les diff´rents backends
e
• Criticti´ VS volum´trie, ou
e e
bien choisir ses backends
P. Rineau Petit trait´ de performances ` l’usage de tous
e a
21. Un GROS goulot : la base de donn´es
e
Petite introduction
La gestion des caches
Les causes ´videntes
e
Connaˆ son ennemi: L’environnement
ıtre
D´tails et solutions
e
Connaˆ son ennemi: Les mauvais patterns
ıtre
Et pour finir
Connaˆ son ennemi: Le manque de connaissance
ıtre
G´n´ralit´s et erreurs communes
e e e
• Parlons un peu des caches statiques
• Statiques ou persistents, ne vous substituez jamais au
compilateur!
• Le cache doit ˆtre au coeur du design de l’application
e
• Dans certains cas il doit orienter les API
• Trop de niveaux de cache dans la mˆme API soul`ve souvent un
e e
probl`me de design
e
P. Rineau Petit trait´ de performances ` l’usage de tous
e a
22. Un GROS goulot : la base de donn´es
e
Petite introduction
La gestion des caches
Les causes ´videntes
e
Connaˆ son ennemi: L’environnement
ıtre
D´tails et solutions
e
Connaˆ son ennemi: Les mauvais patterns
ıtre
Et pour finir
Connaˆ son ennemi: Le manque de connaissance
ıtre
L’ennemi de l’architecte : l’environnement
Linux / Apache / MySQL / PHP
• Peu importe l’OS, mˆme probl´matiques
e e
• Architecture N-tiers de fait
• Environnement consommateur en I/O
P. Rineau Petit trait´ de performances ` l’usage de tous
e a
23. Un GROS goulot : la base de donn´es
e
Petite introduction
La gestion des caches
Les causes ´videntes
e
Connaˆ son ennemi: L’environnement
ıtre
D´tails et solutions
e
Connaˆ son ennemi: Les mauvais patterns
ıtre
Et pour finir
Connaˆ son ennemi: Le manque de connaissance
ıtre
L’OS
• Son goulot d’´tranglement, les I/O
e
P. Rineau Petit trait´ de performances ` l’usage de tous
e a
24. Un GROS goulot : la base de donn´es
e
Petite introduction
La gestion des caches
Les causes ´videntes
e
Connaˆ son ennemi: L’environnement
ıtre
D´tails et solutions
e
Connaˆ son ennemi: Les mauvais patterns
ıtre
Et pour finir
Connaˆ son ennemi: Le manque de connaissance
ıtre
Le HTTPd
• Son goulot d’´tranglement, le HTTP (et donc les I/O)
e
• Mais aussi :
• La concurence
• La m´moire
e
P. Rineau Petit trait´ de performances ` l’usage de tous
e a
25. Un GROS goulot : la base de donn´es
e
Petite introduction
La gestion des caches
Les causes ´videntes
e
Connaˆ son ennemi: L’environnement
ıtre
D´tails et solutions
e
Connaˆ son ennemi: Les mauvais patterns
ıtre
Et pour finir
Connaˆ son ennemi: Le manque de connaissance
ıtre
Le SGBD
• Maˆ
ıtre des donn´es, de leur int´grit´ et coh´rence
e e e e
• Difficile ` clusteriser
a
• Une force et faiblesse : le query cache (MySQL seulement)
P. Rineau Petit trait´ de performances ` l’usage de tous
e a
26. Un GROS goulot : la base de donn´es
e
Petite introduction
La gestion des caches
Les causes ´videntes
e
Connaˆ son ennemi: L’environnement
ıtre
D´tails et solutions
e
Connaˆ son ennemi: Les mauvais patterns
ıtre
Et pour finir
Connaˆ son ennemi: Le manque de connaissance
ıtre
PHP
• Langage interp´t´ : compilation lors de chaque hit
e e
• Non persistent, d’o` la n´c´ssit´ des caches binaires
u e e e
P. Rineau Petit trait´ de performances ` l’usage de tous
e a
27. Un GROS goulot : la base de donn´es
e
Petite introduction
La gestion des caches
Les causes ´videntes
e
Connaˆ son ennemi: L’environnement
ıtre
D´tails et solutions
e
Connaˆ son ennemi: Les mauvais patterns
ıtre
Et pour finir
Connaˆ son ennemi: Le manque de connaissance
ıtre
Comment rendre PHP lightening fast
Utilisez un OPCode cache
• Enl`ve la phase de compilation et interpr´tation
e e
• Apporte de nombreuse optimisations
De mani`re g´n´rale, divise le temps d’ex´cution approximativement
e e e e
par 2
P. Rineau Petit trait´ de performances ` l’usage de tous
e a
28. Un GROS goulot : la base de donn´es
e
Petite introduction
La gestion des caches
Les causes ´videntes
e
Connaˆ son ennemi: L’environnement
ıtre
D´tails et solutions
e
Connaˆ son ennemi: Les mauvais patterns
ıtre
Et pour finir
Connaˆ son ennemi: Le manque de connaissance
ıtre
Un OPCode cache : APC
Voici un exemple des optimisations possibles. Les chiffres proviennent
d’un environnement de d´veloppement, sur la home page d’un site D7
e
sans modules.
• PHP sans OPcode : 360ms
• APC, sans configuration pr´alable : 107ms
e
• Avec apc.include_once_override et apc.canonicalize et sans
apc.stat : 103ms
• Avec le cache_bootstrap binaire dans APC : 94ms
P. Rineau Petit trait´ de performances ` l’usage de tous
e a
29. Un GROS goulot : la base de donn´es
e
Petite introduction
La gestion des caches
Les causes ´videntes
e
Connaˆ son ennemi: L’environnement
ıtre
D´tails et solutions
e
Connaˆ son ennemi: Les mauvais patterns
ıtre
Et pour finir
Connaˆ son ennemi: Le manque de connaissance
ıtre
L’ennemi du d´veloppeur : le manque de culture
e
`
• A quasiment chaque probl`me il existe d´ja une solution
e e
• Un code grandissant n´c´ssite de r´fl´chir
e e e e
• Un code trop grandissant ne demande qu’` diminuer
a
• Renseignez vous sur comment la machine comprend votre code
• N’ayez jamais peur lire celui des autres !
P. Rineau Petit trait´ de performances ` l’usage de tous
e a
30. Un GROS goulot : la base de donn´es
e
Petite introduction
La gestion des caches
Les causes ´videntes
e
Connaˆ son ennemi: L’environnement
ıtre
D´tails et solutions
e
Connaˆ son ennemi: Les mauvais patterns
ıtre
Et pour finir
Connaˆ son ennemi: Le manque de connaissance
ıtre
L’ennemi de l’int´grateur : trop de module tue le module
e
• Plus on est de fou, moins c’est rapide
• Pourquoi utiliser un module de 100 000 lignes de code quand 10
suffisent ?
• Pensez-vous ` tester les performances durant le d´veloppement ?
a e
• Savoir d´tecter les incoh´rences
e e
P. Rineau Petit trait´ de performances ` l’usage de tous
e a
31. Petite introduction
Les causes ´videntes
e En vrac. . .
D´tails et solutions
e Le temps. . .
Et pour finir
Quelques id´es en vrac
e
• Profilez-vous durant le d´veloppement et l’int´gration (xdebug,
e e
analyse de code, benchmarks) ?
• Analysez-vous l’impact de performance de chaque module ? Si
non, faites le ! Vous aurez des surprises..
• Le meilleur ami, de tous, ` tous les niveaux : le benchmark.
a
• Mais avant tout, quel est le m´tier de votre site ?
e
P. Rineau Petit trait´ de performances ` l’usage de tous
e a
32. Petite introduction
Les causes ´videntes
e En vrac. . .
D´tails et solutions
e Le temps. . .
Et pour finir
Ne sachant pas o` le temps allait nous amener
u
P. Rineau Petit trait´ de performances ` l’usage de tous
e a
33. Petite introduction
Les causes ´videntes
e En vrac. . .
D´tails et solutions
e Le temps. . .
Et pour finir
Zi Ende
En avant pour des sites toujours plus sexy!
Figure: c Jean-Yves Lemoigne
P. Rineau Petit trait´ de performances ` l’usage de tous
e a