Beruflich Dokumente
Kultur Dokumente
Vous commencez rcolter le fruit de vos efforts, votre site web est un succs ?
Flicitations ! Cependant, vous sentez que votre site devient plus lent et un beau jour,
avec encore un peu plus de succs et donc plus de trafic, votre site web ne rpond
plus... http://www.thecodingmachine.com/fr/hautes-performances-web
Comprendre de quelle manire aborder ces problmes de performance, rpertorier
l'ensemble des outils et vous permettre de trouver la bonne solution vos problmatiques
de performance, est l'objectif ambitieux de ce livre. N'hsitez pas tlcharger ce livre
blanc au moment de la conception technique de votre projet ou si vous entreprenez une
dmarche d'amlioration des performances.
Il n'est pas toujours ais de comprendre pourquoi son application web ne rpond pas
comme convenu. Il est alors toujours simple de pointer du doigt tel ou tel problme, mais
tes-vous sr que vous les abordez dans le bon ordre et de la bonne manire ?
The Coding Machine se propose dans ce livre blanc de vous prsenter sa dmarche
d'amlioration des performances de vos projets web. Cette dmarche, construite autour
d'expriences diverses et prouves par de nombreux projets (les rfrences The Coding
Machine), a pour objectif de vous faire gagner un temps prcieux dans l'analyse de vos
performances.
Dmarche de diagnostic et d'optimisation pour amliorer les performances d'un site Web. par
The Coding Machine (Expertise, dveloppement et conseil en Informatique (PHP)) (Blog)
1 - Introduction.............................................................................................................................................................4
1-A - Une histoire qui se rpte souvent...............................................................................................................4
1-B - De l'importance de mettre en place un plan d'amlioration continu des performances................................ 4
1-C - qui s'adresse ce livre blanc et comment l'utiliser ?...................................................................................4
1-D - Pourquoi ce livre blanc ?.............................................................................................................................. 5
1-E - propos de The Coding Machine et des auteurs....................................................................................... 5
2 - Introduction, dmarche et diagnostic.....................................................................................................................6
2-A - Introduction - quelques rflexions pour bien dmarrer................................................................................. 6
2-B - Vue d'ensemble de la dmarche.................................................................................................................. 7
2-B-1 - Constater le problme de performance............................................................................................... 7
2-B-2 - Reproduire le problme et trouver une solution...................................................................................7
2-B-3 - Mise en production et mesure de l'impact........................................................................................... 7
2-C - tablir les premires pistes d'optimisation................................................................................................... 8
2-C-1 - Ressources touches........................................................................................................................... 8
2-C-2 - tablir les premires pistes d'optimisation - les outils serveur............................................................ 8
2-C-2-A - Top............................................................................................................................................... 9
2-C-2-B - IOstat........................................................................................................................................... 9
2-C-2-C - IOtop............................................................................................................................................9
2-C-2-D - Dstat............................................................................................................................................ 9
2-C-3 - tablir les premires pistes d'optimisation - les outils client................................................................ 9
2-C-3-A - Webpagetest.org......................................................................................................................... 9
2-C-3-B - Firebug.......................................................................................................................................10
2-C-3-C - YSlow et Page Speed...............................................................................................................10
2-C-4 - Les outils de monitoring.....................................................................................................................10
2-C-4-A - Munin......................................................................................................................................... 10
2-C-4-B - Nagios........................................................................................................................................10
2-C-4-C - Autres outils.............................................................................................................................. 11
2-C-5 - tablir les premires pistes en fonction des ressources....................................................................11
2-C-5-A - CPU / RAM................................................................................................................................11
2-C-5-B - Bande passante........................................................................................................................ 11
2-C-5-C - Disque dur.................................................................................................................................12
2-C-5-D - Aucun de ces points ne semble critique ?................................................................................12
2-D - Reproduire le problme & tablir le diagnostic.......................................................................................... 12
2-D-1 - Reproduire les problmes de performance........................................................................................12
2-D-1-A - ab...............................................................................................................................................12
2-D-1-B - JMeter........................................................................................................................................12
2-D-1-C - Selenium Grid (reproduction de scnario)................................................................................ 13
2-D-1-D - Batchs de requtes SQL...........................................................................................................13
2-D-2 - tablir le diagnostic............................................................................................................................ 13
2-D-2-A - Logs Apache............................................................................................................................. 13
2-D-2-B - Logs MySQL (dont slow queries)..............................................................................................14
2-D-2-C - Analyse/parsing de code - Xdebug...........................................................................................14
2-D-2-D - MySQLTuner..............................................................................................................................14
2-D-3 - Audit de la structure de la BDD.........................................................................................................14
2-D-3-A - Rseau interne/rseau externe................................................................................................. 15
3 - Amliorer la gestion de votre bande passante....................................................................................................15
3-A - Systme de cache HTTP............................................................................................................................15
3-A-1 - Gestion des ETag............................................................................................................................... 16
3-A-2 - Date d'expiration d'une ressource......................................................................................................16
3-B - Rduire le nombre des fichiers...................................................................................................................16
3-B-1 - Limiter le nombre de fichiers CSS et JS............................................................................................16
3-B-2 - Regrouper les images - Sprite........................................................................................................... 17
3-C - Rduire la taille des fichiers....................................................................................................................... 17
3-C-1 - Rduire la taille des images.............................................................................................................. 17
3-C-2 - Limiter le poids des fichiers - Compression Gzip.............................................................................. 17
3-C-3 - Limiter le poids des fichiers - Minimify...............................................................................................17
3-D - Dporter des ressources............................................................................................................................ 18
3-D-1 - Multi-sites............................................................................................................................................18
-2Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation
de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut
tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez
selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://thecodingmachine.developpez.com/tutoriels/web/demarche-diagnostic-et-optimisation-pour-ameliorer-performance-site-web/?page=page_1/
Dmarche de diagnostic et d'optimisation pour amliorer les performances d'un site Web. par
The Coding Machine (Expertise, dveloppement et conseil en Informatique (PHP)) (Blog)
-3Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation
de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut
tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez
selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://thecodingmachine.developpez.com/tutoriels/web/demarche-diagnostic-et-optimisation-pour-ameliorer-performance-site-web/?page=page_1/
Dmarche de diagnostic et d'optimisation pour amliorer les performances d'un site Web. par
The Coding Machine (Expertise, dveloppement et conseil en Informatique (PHP)) (Blog)
1 - Introduction
1-A - Une histoire qui se rpte souvent...
Vous commencez rcolter le fruit de vos efforts, votre site web est un succs - flicitations ! Cependant, vous sentez
que votre site devient plus lent et un beau jour, avec encore un peu plus de succs et donc plus de trafic, votre site
web ne rpond plus... sur une page, sur une fonctionnalit particulire, ou encore de manire globale, en cas de
trop forte affluence.
Lorsque l'on rencontre des problmes de performance, il est souvent trop tard. Le site est dj en production
et l'activit de la socit peut tre fortement pnalise. Lorsqu'un site devient lent, plus de 50% des visiteurs arrtent
leur navigation. Pour l'quipe du projet, trouver une solution rapidement devient la premire proccupation. Or, en
matire d'optimisation, les solutions sont trs nombreuses. Dans la plupart des cas, elles sont appliques les unes
aprs les autres dans la prcipitation avec une dpense d'nergie incroyable : les quipes travaillent la nuit, le weekend... "mais cette fois, c'est sr, on a la bonne solution !"
Dans la plupart des cas, il faut comprendre que ces solutions uniques et appliques sans discernement vont vous
faire perdre un temps prcieux. Mme si souvent, on finit quand mme par la trouver, avec un peu de chance et au
prix d'efforts considrables.
Notre conviction est que l'application d'une dmarche structure et rationnelle est la cl pour amliorer les
performances de votre site, afin de passer ce cap difficile. Mme (voire surtout) s'il s'agit d'une situation de
crise .
de nombreuses statistiques sur les sites e-Commerce montrent que rduire les temps d'affichage des pages
rduit le taux d'abandon de panier ;
les moteurs de recherche prennent de plus en plus en compte le confort des utilisateurs. Une des seules
mesures leur disposition est le temps de chargement des pages. Amliorer les performances de son site
permet donc d'amliorer son rfrencement naturel.
-4Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation
de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut
tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez
selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://thecodingmachine.developpez.com/tutoriels/web/demarche-diagnostic-et-optimisation-pour-ameliorer-performance-site-web/?page=page_1/
Dmarche de diagnostic et d'optimisation pour amliorer les performances d'un site Web. par
The Coding Machine (Expertise, dveloppement et conseil en Informatique (PHP)) (Blog)
-5Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation
de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut
tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez
selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://thecodingmachine.developpez.com/tutoriels/web/demarche-diagnostic-et-optimisation-pour-ameliorer-performance-site-web/?page=page_1/
Dmarche de diagnostic et d'optimisation pour amliorer les performances d'un site Web. par
The Coding Machine (Expertise, dveloppement et conseil en Informatique (PHP)) (Blog)
Ne recevoir aucune chose pour vraie tant que son esprit ne l'aura clairement et distinctement assimil
e pralablement.
Trier ses difficults afin de mieux les examiner et les rsoudre.
tablir un ordre de penses, en commenant par les plus simples jusqu'aux plus complexes et
diverses, et ainsi de les retenir toutes et en ordre.
Passer toutes les choses en revue afin de ne rien omettre.
-6Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation
de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut
tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez
selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://thecodingmachine.developpez.com/tutoriels/web/demarche-diagnostic-et-optimisation-pour-ameliorer-performance-site-web/?page=page_1/
Dmarche de diagnostic et d'optimisation pour amliorer les performances d'un site Web. par
The Coding Machine (Expertise, dveloppement et conseil en Informatique (PHP)) (Blog)
les diffrences entre les environnements : pour des raisons conomiques, il est rare d'avoir un environnement
de pr-production parfaitement identique celui de production ;
les conditions dans lesquelles les performances se dgradent : il est parfois impossible ou trop coteux de
reproduire ces conditions. Par exemple, si les performances se dgradent lors d'un pic d'audience, reproduire
l'accs au service de nombreux utilisateurs simultanment peut tre complexe.
-7Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation
de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut
tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez
selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://thecodingmachine.developpez.com/tutoriels/web/demarche-diagnostic-et-optimisation-pour-ameliorer-performance-site-web/?page=page_1/
Dmarche de diagnostic et d'optimisation pour amliorer les performances d'un site Web. par
The Coding Machine (Expertise, dveloppement et conseil en Informatique (PHP)) (Blog)
Aussi, dans bien des cas, la seule mesure valable est faite sur l'environnement de production. C'est pour cela que
mettre en place une dmarche pralable a beaucoup d'importance. Elle permet de rduire le risque et de rduire le
temps ncessaire la mise en place des dispositifs d'optimisation.
CPU ;
RAM ;
bande passante ;
disques durs.
Afin d'tablir des pistes de solutions tudier, il convient de mesurer l'utilisation des diffrentes ressources cites cidessus afin de dterminer quelles sont celles qui sont exploites de manire trop intense.
Ces mesures servent aussi comprendre sous quelles conditions et quels moments les performances sont moins
bonnes. De nombreux outils permettent d'effectuer ces mesures. Ils sont dcrits dans les paragraphes suivants.
NOTE : il ne faut pas croire que la libration de la ressource la plus sollicite permet
ncessairement d'amliorer de manire spectaculaire la performance de l'ensemble. Bien
souvent, produire une premire optimisation va conduire trouver qu'une autre ressource
est sature son tour. C'est pourquoi la dmarche est itrative.
Dans cette dmarche il faut respecter un certain ordre. Les ressources matrielles doivent
systmatiquement tre analyses avant les ressources logicielles (mais cela ne signifie
pas que les solutions sont ncessairement matrielles). Par exemple, il faut s'assurer que
l'utilisation du CPU par la base de donnes n'est pas critique avant de se pencher sur la
configuration du nombre de connexions la base de donnes.
BON SAVOIR : le disque dur doit tre analys aprs la RAM en raison du phnomne
de SWAP qui fait porter l'excdent de mmoire utilise par le disque dur lorsque la RAM
disponible est insuffisante.
-8Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation
de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut
tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez
selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://thecodingmachine.developpez.com/tutoriels/web/demarche-diagnostic-et-optimisation-pour-ameliorer-performance-site-web/?page=page_1/
Dmarche de diagnostic et d'optimisation pour amliorer les performances d'un site Web. par
The Coding Machine (Expertise, dveloppement et conseil en Informatique (PHP)) (Blog)
2-C-2-A - Top
La commande TOP est l'outil de monitoring des systmes Linux par excellence. TOP produit une liste des processus
actifs du serveur, et dtaille leur consommation de temps processeur (CPU) et de mmoire (RAM). Il indique
galement la charge moyenne du systme sur trois priodes : 1 minute, 5 minutes et 15 minutes. Si cet outil ne
permet pas de connatre directement l'origine du problme, ce chiffre aide confirmer s'il s'agit d'un pic d'activit ou
bien si la machine est sature depuis un certain temps.
NOTE : il est noter que TOP a t pens de manire ne pas faire partie lui-mme des
processus le plus consommateurs de ressources qu'il mesure.
BON SAVOIR : TOP est un outil extrmement utile. Il permet d'identifier les problmes
les plus vidents sur la consommation de RAM et de CPU. En revanche, il est possible
que TOP ne dtecte aucun problme apparent, alors que votre machine est belle et bien
ralentie. Cela se produit notamment si le problme se situe au niveau des accs disque,
ou encore au niveau des ressources logicielles.
2-C-2-B - IOstat
La commande IOSTAT est utilise pour contrler la charge des priphriques entre/sortie en observant leur
temps d'activit par rapport leur taux de transfert. Cette commande est souvent utile pour harmoniser la charge
lecture/criture entre les diffrents disques durs.
2-C-2-C - IOtop
Si l'accs en lecture/criture de votre disque est satur (par exemple trop de requtes INSERT, UPDATE ou DELETE
peuvent surcharger votre disque en criture), la commande TOP peut s'avrer insuffisante comme expos ci-dessus.
IOTOP prsente, de la mme manire que TOP, les processus qui consomment le plus de lecture et d'criture
sur votre systme.
2-C-2-D - Dstat
DSTAT est un outil de mesure transversal. Alors que TOP se spcialise dans l'activit CPU et IOTOP dans les accs
disques, DSTAT permet de surveiller l'activit sur le serveur de manire transverse. L'utilisateur peut dcider d'afficher
des indicateurs tels que l'activit CPU, l'activit des disques, l'activit rseau, etc. cte cte.
NOTE : ce n'est pas l'outil le plus prcis, mais il est trs pratique pour comparer
rapidement diffrentes mesures du systme. De plus, il permet aisment de raliser des
logs analysables sur un tableur comme Excel ou Open Office Calc.
-9Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation
de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut
tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez
selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://thecodingmachine.developpez.com/tutoriels/web/demarche-diagnostic-et-optimisation-pour-ameliorer-performance-site-web/?page=page_1/
Dmarche de diagnostic et d'optimisation pour amliorer les performances d'un site Web. par
The Coding Machine (Expertise, dveloppement et conseil en Informatique (PHP)) (Blog)
2-C-3-B - Firebug
Firebug est une plugin de Firefox apprci des dveloppeurs web. Il permet d'inspecter le code HTML en ciblant
directement l'lment dans la page, d'diter le style CSS pour tester le rsultat directement, dboguer le JavaScript
avec des points d'arrts et un mode pas pas et espionner le trafic XMLHttpRequest (Ajax). Tout comme
webpagetest.org, Firebug permet de disposer d'un diagramme chronologique du chargement de la page. Firebug
tant un outil local, vous pouvez mme l'utiliser pour tester votre application en phase de dveloppement.
2-C-4-A - Munin
Munin permet de surveiller les diffrentes ressources de vos serveurs. Un client est install sur chacune des
machines, et les donnes mesures sont agrges intervalle rgulier vers une machine centrale (o le serveur
Munin se trouve), et prsentes sous forme graphique.
Munin permet, dans son installation la plus simple, de surveiller l'utilisation du disque, de la RAM, du CPU et du
rseau. Cet outil est Open Source et il existe de nombreux plugins permettant de mesurer d'autres ressources, telles
que :
2-C-4-B - Nagios
Nagios est un outil de surveillance de serveurs. Contrairement Munin, Nagios n'est pas un outil de mesure de
l'activit. Il est utilis uniquement pour remonter des alertes. Extensible avec des plugins, il peut remonter des alertes
comme :
- 10 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation
de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut
tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez
selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://thecodingmachine.developpez.com/tutoriels/web/demarche-diagnostic-et-optimisation-pour-ameliorer-performance-site-web/?page=page_1/
Dmarche de diagnostic et d'optimisation pour amliorer les performances d'un site Web. par
The Coding Machine (Expertise, dveloppement et conseil en Informatique (PHP)) (Blog)
Lorsqu'une alerte est remonte, l'outil peut tre paramtr pour prendre des actions, comme envoyer un mail d'alerte
aux administrateurs, ou encore envoyer des SMS.
NOTE : si les problmes de performance se produisent de manire alatoire et non
reproductible, Nagios peut tre utilis pour vous alerter des problmes rencontrs. Vous
pourrez alors vous connecter au serveur pour effectuer des mesures plus approfondies
en temps rel.
- 11 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation
de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut
tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez
selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://thecodingmachine.developpez.com/tutoriels/web/demarche-diagnostic-et-optimisation-pour-ameliorer-performance-site-web/?page=page_1/
Dmarche de diagnostic et d'optimisation pour amliorer les performances d'un site Web. par
The Coding Machine (Expertise, dveloppement et conseil en Informatique (PHP)) (Blog)
Apache : la premire piste examiner sont les logs Apache afin d'observer combien consomme chaque requte et
rechercher quels sont les pages ou les fichiers volumineux. En effet, les logs Apache sont assez flexibles et il est
possible de les configurer pour afficher la quantit de donnes envoyes chaque requte.
NOTE : lorsqu'on mesure la bande passante du serveur, il est important de garder
l'esprit que le serveur n'est pas le seul saturer. Votre connexion internet ADSL saturera
certainement avant. Si IOStat ne montre pas de surconsommation rseau, la raison d'un
affichage lent pourrait tre votre connexion internet, ou n'importe quel lment rseau
entre votre client et votre serveur.
2-D-1-A - ab
ab est un outil d'valuation des performances de votre serveur web. Il indique le nombre de requtes par seconde
que votre application est capable de prendre en charge. Les deux paramtres principaux sont le nombre de requtes
simultanes ainsi que le nombre total de requtes effectuer.
BON SAVOIR : bien qu'il soit possible d'utiliser d'autres paramtres pour passer des
valeurs POST, des cookies, etc., cet outil n'est pas fait pour simuler efficacement l'activit
d'un ou plusieurs utilisateurs qui naviguent sur votre site, mais plutt pour simuler l'arrive
massive d'utilisateurs sur une page. En effet, ab n'intgre pas de notion de scnario, car
il ne peut tester qu'une seule URL la fois.
2-D-1-B - JMeter
JMeter est une application que l'on peut dployer sur un poste de travail (il vaut mieux qu'il soit ddi afin que le
dveloppeur qui s'en sert puisse travailler pendant les runs de tests). C'est un outil qui permet de simuler un grand
- 12 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation
de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut
tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez
selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://thecodingmachine.developpez.com/tutoriels/web/demarche-diagnostic-et-optimisation-pour-ameliorer-performance-site-web/?page=page_1/
Dmarche de diagnostic et d'optimisation pour amliorer les performances d'un site Web. par
The Coding Machine (Expertise, dveloppement et conseil en Informatique (PHP)) (Blog)
nombre de requtes concurrentes HTTP et donc de simuler le comportement du site avec un grand nombre de
visiteurs. L'outil produit une synthse graphique des rsultats du test.
NOTE : dans le cas d'une architecture LAMP, l'outil ne prsente d'intrt que pour les
requtes HTTP. En revanche, il permet de tester beaucoup d'autres lments annexes
(serveurs de mails, connexion JDBC, etc.).
BON SAVOIR : JMeter n'mule pas compltement un navigateur (contrairement
un outil comme Selenium). Il est donc plus difficile de crer un jeu de tests qui soit
reprsentatif du comportement exact de l'application.
- 13 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation
de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut
tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez
selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://thecodingmachine.developpez.com/tutoriels/web/demarche-diagnostic-et-optimisation-pour-ameliorer-performance-site-web/?page=page_1/
Dmarche de diagnostic et d'optimisation pour amliorer les performances d'un site Web. par
The Coding Machine (Expertise, dveloppement et conseil en Informatique (PHP)) (Blog)
2-D-2-D - MySQLTuner
MySQLTuner est un script crit en Perl qui vous permet d'prouver une installation MySQL rapidement et de faire
des recommandations pour amliorer les performances et la stabilit de la base de donnes. Il produit un rapport
dtaillant :
- 14 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation
de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut
tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez
selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://thecodingmachine.developpez.com/tutoriels/web/demarche-diagnostic-et-optimisation-pour-ameliorer-performance-site-web/?page=page_1/
Dmarche de diagnostic et d'optimisation pour amliorer les performances d'un site Web. par
The Coding Machine (Expertise, dveloppement et conseil en Informatique (PHP)) (Blog)
le temps de connexion ;
et le temps de latence.
Un navigateur internet doit recevoir l'ensemble du code HTML (DOM) du serveur avant de pouvoir afficher le contenu.
Pour chaque lment, contenu, image, vido, etc., le navigateur se connecte au serveur grce au protocole TCP/
IP. Ce processus prend en moyenne 70 ms pour un serveur proche et peut aller plus de 300 ms pour le rseau
mobile. C'est le temps de connexion.
cela, il faut ajouter le temps de latence du serveur qui ne rpondra pas toujours instantanment car il traite les
demandes dans l'ordre d'arrive.
Ces temps sont irrductibles. Aussi, les navigateurs rcents tablissent simultanment plusieurs connexions avec le
serveur. Ceci permet de parallliser les temps d'attente.
Sur une page HTML classique, 70% du temps d'affichage n'est pas le temps de tlchargement, mais le temps
ncessaire la connexion auquel s'ajoute le temps de latence, la meilleure des optimisations est donc de rduire
le nombre de requtes au serveur.
BON SAVOIR : il est possible, si vous avez une architecture comprenant plusieurs
serveurs, que les dialogues entre ces derniers impactent vos performances. Mme si ce
cas est trs peu probable, il est bon de s'en souvenir si vous ne trouvez pas d'o viennent
vos problmes de performance, notamment si les serveurs sont distants physiquement.
- 15 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation
de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut
tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez
selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://thecodingmachine.developpez.com/tutoriels/web/demarche-diagnostic-et-optimisation-pour-ameliorer-performance-site-web/?page=page_1/
Dmarche de diagnostic et d'optimisation pour amliorer les performances d'un site Web. par
The Coding Machine (Expertise, dveloppement et conseil en Informatique (PHP)) (Blog)
Les navigateurs des visiteurs grent leur propre cache. part quelques options configurables par l'utilisateur, le
fonctionnement de ce cache est dfini par les paramtres du serveur. L'intrt est de profiter du cache du navigateur
pour viter de rcuprer les fichiers et donc limiter la bande passante utilise par les navigateurs.
- 16 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation
de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut
tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez
selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://thecodingmachine.developpez.com/tutoriels/web/demarche-diagnostic-et-optimisation-pour-ameliorer-performance-site-web/?page=page_1/
Dmarche de diagnostic et d'optimisation pour amliorer les performances d'un site Web. par
The Coding Machine (Expertise, dveloppement et conseil en Informatique (PHP)) (Blog)
BON SAVOIR : cependant, si vous utilisez un framework ou un CMS, vrifiez que celuici ne propose pas un mode d'agrgation.
- 17 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation
de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut
tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez
selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://thecodingmachine.developpez.com/tutoriels/web/demarche-diagnostic-et-optimisation-pour-ameliorer-performance-site-web/?page=page_1/
Dmarche de diagnostic et d'optimisation pour amliorer les performances d'un site Web. par
The Coding Machine (Expertise, dveloppement et conseil en Informatique (PHP)) (Blog)
Par exemple, la version 1.4.4 min de jQuery pse 76.6 ko tandis que la version normale (de dveloppement) pse
178 ko.
3-D-1 - Multi-sites
Dployer son site sur plusieurs noms de domaine (ou sous-domaines) permet l'utilisateur de charger plusieurs
fichiers simultanment sur plusieurs serveurs. En effet, le navigateur ouvre un nombre de connexion dfini par nom
de domaine. Ainsi avec 2 serveurs on ouvre 2 fois plus de connexion.
Le nombre de connexions simultanes ouvertes dpend de votre navigateur. Internet Explorer 6 n'ouvre que 2
connexions simultanes, l o Firefox 3 en ouvre 8.
Si votre page contient une vingtaine d'images/fichiers CSS/fichiers JavaScript, sous Internet Explorer 6, elles seront
rparties sur 2 connexions seulement, soit 10 ressources charges en srie et non en parallle.
En rpartissant les ressources sur 2 noms de domaine diffrents, il est possible que le navigateur ouvre jusqu' 4
connexions (ou 16 pour Firefox). Donc deux fois plus rapide pour charger la page.
Pour autant, il ne faut pas non plus tomber dans l'excs inverse en possdant un grand nombre de domaines. Tout
accs un nouveau domaine entrane des temps de recherche au serveur DNS (Domain Name System server,
Serveur de nom de domaine, temps de recherche du serveur). Que le serveur soit le mme ou non, ce temps sera
incompressible. De plus, le fait de multiplier les noms de domaine peut entraner une complexit de maintenance. Il
est donc important de calibrer le rapport nombre de ressources/nombre de domaines.
Dmarche de diagnostic et d'optimisation pour amliorer les performances d'un site Web. par
The Coding Machine (Expertise, dveloppement et conseil en Informatique (PHP)) (Blog)
- 19 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation
de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut
tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez
selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://thecodingmachine.developpez.com/tutoriels/web/demarche-diagnostic-et-optimisation-pour-ameliorer-performance-site-web/?page=page_1/
Dmarche de diagnostic et d'optimisation pour amliorer les performances d'un site Web. par
The Coding Machine (Expertise, dveloppement et conseil en Informatique (PHP)) (Blog)
4-A-2 - Memcache
Memcache est un systme de cache pour stocker les lments qui concernent la session des utilisateurs, des
rsultats de requtes etc. Il permet d'viter d'utiliser des ressources du serveur afin qu'il rponde plus rapidement.
Performant, il peut stocker n'importe quel objet PHP srialisable, et peut tre partag entre plusieurs serveurs dans
le cas d'une architecture avec load-balancing.
Vous pouvez utiliser Memcache pour stocker des rsultats de requtes SQL coteuses, des statistiques, etc.
Dmarche de diagnostic et d'optimisation pour amliorer les performances d'un site Web. par
The Coding Machine (Expertise, dveloppement et conseil en Informatique (PHP)) (Blog)
que la communaut travaillant sous Apache est bien plus vaste, et que les gains en
performance ne sont pas toujours sensibles.
D'autre part, si vous n'utilisez pas de framework ORM qui gre lui-mme la rcupration des donnes, veillez fermer
les ResultSets qui ont t ouverts :
PHP
4-C-2 - Autoload
SYMPTMES : la consommation processeur de vos processus PHP est trop leve.
Cette fonctionnalit permet de trouver une classe si elle n'a pas t identifie dans le contexte courant. Ainsi, votre
code PHP peut charger les classes PHP dont il a besoin la vole . Par exemple, l'objet $user, de la classe User,
ne peut tre instanci si le fichier User.class.php n'a pas t inclus ( require_once ).
Exemple :
PHP
- 21 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation
de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut
tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez
selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://thecodingmachine.developpez.com/tutoriels/web/demarche-diagnostic-et-optimisation-pour-ameliorer-performance-site-web/?page=page_1/
Dmarche de diagnostic et d'optimisation pour amliorer les performances d'un site Web. par
The Coding Machine (Expertise, dveloppement et conseil en Informatique (PHP)) (Blog)
PHP
Cet exemple semble trivial, mais imaginez que vous disposez d'une librairie de classes que vous utilisez partout dans
votre application. Par dfaut, deux options sont envisages :
inclure la vole les classes que vous utilisez chaque fois, ce qui devient vite fastidieux ;
faire l'inclusion de tous les fichiers au dbut du script, mais vous incluez alors des fichiers qui ne sont pas
utiliss dans tous les scripts, d'o une consommation inutile de RAM et de temps processeur.
Utiliser l'autoload est donc fortement recommand, et cette solution est mme plus efficace que celle qui consiste
inclure les fichiers la vole, car un require_once doit vrifier si ce fichier a t dj inclus ou non.
4-D-2 - Ajax
L'Ajax (Asynchronous JavaScript And XML) est une manire de dialoguer avec le serveur aprs le chargement de
la page, grce au JavaScript. L'intrt est de charger les lments qui prennent du temps aprs que le navigateur
de l'utilisateur a affich le contenu de la page internet.
Si vous avez un calcul long, que vous devez faire chaque fois et que malgr toutes les recommandations que vous
avez suivies, vous ne pouvez pas rduire le temps, alors il est prfrable d'afficher la page sans cet lment puis
de rcuprer le rsultat sur le serveur ensuite.
Toutefois, il faut faire attention car certains moteurs de recherche ne pourront pas indexer le contenu de ce bloc.
NOTE : ATTENTION AUX FRAMEWORKS. Certains frameworks et certains CMS doivent
charger un ensemble de modules et d'outils avant de passer l'excution du code
effectif . Dans la mesure du possible, lorsque vous faites de l'Ajax, essayez de charger
le moins d'lments possible pour limiter la dure d'excution et ainsi acclrer le retour
d'information.
- 22 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation
de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut
tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez
selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://thecodingmachine.developpez.com/tutoriels/web/demarche-diagnostic-et-optimisation-pour-ameliorer-performance-site-web/?page=page_1/
Dmarche de diagnostic et d'optimisation pour amliorer les performances d'un site Web. par
The Coding Machine (Expertise, dveloppement et conseil en Informatique (PHP)) (Blog)
NOTE : requtes multiples. Si une page effectue plusieurs appels Ajax, sachez que PHP
ne pourra traiter la requte suivante qu'une fois que la session aura t libre (fonction
session_write_close). En effet, la session tant par dfaut libre en fin d'excution du
script, les requtes Ajax pourront alors tre traites simultanment.
les boucles for qui dcrmentent la variable au lien de l'incrmenter sont plus rapides ;
la boucle for est plus rapide que la boucle while ;
il faut utiliser des guillemets simples au lieu de guillemets doubles ;
le dveloppement objet est plus lent que le dveloppement procdural.
Tous ces conseils rsultent de dbats sans fin entre dveloppeurs de langages de programmation.
Vous trouverez sur Internet des benchmark foison comparant les performances entre guillemets simples et
guillemets doubles. Et il est vrai que lors d'une boucle qui concatne 100000 fois une chane de caractres, les
guillemets simples sont 3% plus rapides que les guillemets doubles. Mais restons focalis sur l'important ! Si vous
lisez ce livre blanc, vous n'tes pas la recherche d'une amlioration de 3% de vos performances, mais bien de
100 ou 200%. Oubliez donc ces fausses optimisations, et concentrez-vous sur de vraies solutions comme l'tude
des index ou l'optimisation des flux !
Dmarche de diagnostic et d'optimisation pour amliorer les performances d'un site Web. par
The Coding Machine (Expertise, dveloppement et conseil en Informatique (PHP)) (Blog)
- 24 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation
de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut
tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez
selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://thecodingmachine.developpez.com/tutoriels/web/demarche-diagnostic-et-optimisation-pour-ameliorer-performance-site-web/?page=page_1/
Dmarche de diagnostic et d'optimisation pour amliorer les performances d'un site Web. par
The Coding Machine (Expertise, dveloppement et conseil en Informatique (PHP)) (Blog)
En reprenant l'exemple de la bibliothque, on pourrait crer un index sur les auteurs, puis les noms d'ouvrage. Les
livres seraient d'abord classs par auteurs, puis par nom d'ouvrage. Ainsi, il serait rapide de retrouver un livre dont
on connat l'auteur et le nom.
BON SAVOIR : dans les index multi-colonnes, l'ordre des colonnes est primordial.
Si ce type de requte vous pose des problmes de performances, il faudra crer un index FULL-TEXT. Les index
FULL-TEXT permettent de rechercher rapidement du texte plac au milieu ou la fin d'une colonne.
BON SAVOIR : sous MySQL, il y a cependant des restrictions. Les bases de donnes
InnoDB ne supportent pas les index FULL-TEXT. Il faudra utiliser le moteur MyISAM, qui
possde lui-mme d'autres limitations.
- 25 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation
de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut
tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez
selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://thecodingmachine.developpez.com/tutoriels/web/demarche-diagnostic-et-optimisation-pour-ameliorer-performance-site-web/?page=page_1/
Dmarche de diagnostic et d'optimisation pour amliorer les performances d'un site Web. par
The Coding Machine (Expertise, dveloppement et conseil en Informatique (PHP)) (Blog)
Dans le cas de notre table livres , il s'agirait d'un client souhaitant retrouver un livre dont le contenu contienne
le mot collier , mais aussi le mot girafe . Le mcanisme devrait tre suffisamment souple pour permettre les
fautes d'orthographe (par exemple giraffe au lieu de girafe ), et ne retourner que les livres publis aprs 2009.
Dans ce type d'exemple, il faut envisager de revoir l'architecture de l'application. De toute vidence, MySQL n'est
pas bien adapt aux recherches FULL-TEXT complexes, et est incapable de raliser des requtes approximatives
(fuzzy-searches).
Si vous souhaitez raliser des recherches de ce type, et si vous avez des problmes de performance cause de ces
requtes, il existe des bases de donnes spcialises pour la recherche dans une grande quantit de documents
full-text .
Lucene : Lucene est un moteur de recherche full-text. l'origine implment en Java, il en existe une implmentation
PHP dans le Zend Framework : http://framework.zend.com/manual/fr/zend.search.lucene.html
Lucene stocke des documents et permet de rechercher en full-text dans le document ou ses mtadonnes. Il
permet d'effectuer des fuzzy-searches et des requtes complexes.
L'implmentation PHP de Lucene est relativement lente par rapport son homologue Java. Aussi, Lucene ne devrait
pas tre utilis si la volumtrie est trop grande. On se tournera alors vers Solr.
Apache Solr :serveur bas sur la version Java de Lucene. Il s'interroge via web-services (sur un modle REST), et
permet facilement de stocker les documents puis de les chercher. Si vos problmes de performances sont dus
une fonctionnalit de recherche full-text et que l'implmentation de Lucene dans le Zend Framework ne suffit plus,
Apache Solr est la solution dont vous avez besoin :http://lucene.apache.org/solr/
NOTE : nous avons prsent Lucene et Apache Solr, qui sont les solutions les plus
connues, mais il en existe d'autres. NOTE : sans ce paragraphe, nous n'avons que
prsent les possibilits d'optimisation les plus lmentaires. Bien matriser la gestion des
index de la base de donnes est primordial pour obtenir des performances satisfaisantes
mais le sujet est vaste et dpasse le cadre de ce livre blanc. Il faudrait par exemple traiter
des diffrents types d'index (HASH, TREE, etc..). N'hsitez pas approfondir le sujet avec
la documentation MySQL :
5-B - Agrgation
La bonne gestion des index a une importance directe sur les performances de votre projet web. Mais il est possible
de rencontrer malgr tout des problmes lis au temps d'excution de certaines requtes. C'est notamment le cas
des applications qui prsentent des statistiques.
Agrger des donnes permet de faire des requtes sur les tables moins volumineuses. Le principe est d'appliquer
un ensemble de pr-calcul sur la table puis de stocker le rsultat dans une nouvelle table. Les donnes seront prises
dans la table agrge. Le but est de n'avoir que trs peu de calcul faire au moment de l'excution de la requte
afin d'amliorer le temps de rponse.
- 26 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation
de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut
tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez
selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://thecodingmachine.developpez.com/tutoriels/web/demarche-diagnostic-et-optimisation-pour-ameliorer-performance-site-web/?page=page_1/
Dmarche de diagnostic et d'optimisation pour amliorer les performances d'un site Web. par
The Coding Machine (Expertise, dveloppement et conseil en Informatique (PHP)) (Blog)
excuter trs souvent le script : ceci permet d'avoir des donnes proches du temps rel, et peut tre excut
rapidement, condition que la base de donnes s'y prte. Il est possible que la requte la plus simple mette
plusieurs minutes, auquel cas il sera impossible de lancer souvent le script sous peine de saturer le serveur ;
excuter une fois par jour : mme si le script est long, il ne bloquera pas le serveur. Il est conseill de
l'excuter au moment o la charge serveur est la plus faible (souvent en pleine nuit).
Avantage : la solution est souvent facile dvelopper et dployer, grande libert dans le code.
Inconvnient : les donnes prsentes ne sont pas le reflet exact de la production. Selon les volumes, les tests sont
parfois longs et complexes raliser.
Ce script excutera une premire requte pour rcuprer tous les utilisateurs, puis, pour chaque utilisateur retourn,
une nouvelle requte sera effectue pour connatre le nombre de voitures qu'il possde. Une meilleure pratique
consiste lancer une seule requte pour tout rcuprer en une seule fois :
PHP
$result = mysql_query("
- 27 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation
de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut
tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez
selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://thecodingmachine.developpez.com/tutoriels/web/demarche-diagnostic-et-optimisation-pour-ameliorer-performance-site-web/?page=page_1/
Dmarche de diagnostic et d'optimisation pour amliorer les performances d'un site Web. par
The Coding Machine (Expertise, dveloppement et conseil en Informatique (PHP)) (Blog)
PHP
SELECT *
FROM users
WHERE user.role_id IN (
SELECT uid FROM users_roles
WHERE rid IN (
SELECT rid
FROM role
WHERE name IN ('administrateur', 'client')
)
)
Cette requte utilise deux requtes imbriques, alors que l'usage de jointures serait plus performant :
SQL
SELECT *
FROM users u
JOIN users_roles ur on ur.user_id = u.id
JOIN role r on r.id=ur.role_id
WHERE r.name IN ('administrateur', 'client')
- 28 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation
de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut
tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez
selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://thecodingmachine.developpez.com/tutoriels/web/demarche-diagnostic-et-optimisation-pour-ameliorer-performance-site-web/?page=page_1/
Dmarche de diagnostic et d'optimisation pour amliorer les performances d'un site Web. par
The Coding Machine (Expertise, dveloppement et conseil en Informatique (PHP)) (Blog)
Id
1
2
Produits
Product_id
2
1
Name
TV
Radio
Si l'on souhaite obtenir la liste des achats, on effectuera une requte avec probablement deux jointures pour rcuprer
le nom des utilisateurs et des produits.
La forme dnormalise serait :
Utilisateurs
Id
Name
1
John
2
bob
Achats
User
John
Bob
Id
1
2
Produits
Product
Radio
TV
Name
TV
Radio
Cette forme sera plus efficace requter, puisque la base de donnes n'aura pas de jointures faire.
En revanche, sous cette forme, la base de donnes est beaucoup plus dure maintenir. Si un produit change de
nom par exemple, il faudra modifier son nom dans tous les champs dnormaliss de la base, ce qui est complexe,
et aussi long !
Bonne pratique : il vaut mieux toujours partir d'un modle normalis et ne dnormaliser que lorsque les problmes de
performance sont constats. En effet, la dnormalisation complexifie la maintenance du code et devrait tre vite
si possible.
- 29 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation
de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut
tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez
selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://thecodingmachine.developpez.com/tutoriels/web/demarche-diagnostic-et-optimisation-pour-ameliorer-performance-site-web/?page=page_1/
Dmarche de diagnostic et d'optimisation pour amliorer les performances d'un site Web. par
The Coding Machine (Expertise, dveloppement et conseil en Informatique (PHP)) (Blog)
La dnormalisation sera par contre la rgle pour accder des techniques plus avances comme les bases
de donnes multidimensionnelles. Dans ce cas, on devra en effet commencer construire une vue entirement
dnormalise de la base avant de remplir la base de donnes multidimensionnelle.
NOTE : d'autres bases de donnes comme les bases de donnes NoSQL reposent sur
des modles moins stricts et moins norms (donc plus dnormaliss). Nous n'aborderons
cependant pas le sujet dans ce livre blanc, le sujet mritant lui seul son propre livre !
Si vous dcidez d'utiliser une base de donnes multidimensionnelle, vous devrez choisir la base utiliser. Citons
les plus connues :
Dmarche de diagnostic et d'optimisation pour amliorer les performances d'un site Web. par
The Coding Machine (Expertise, dveloppement et conseil en Informatique (PHP)) (Blog)
MySQL est une base proposant plusieurs moteurs de gestion des tables en son sein, les plus connus tant MyISAM
et InnoDB. Chacun de ces moteurs possde des performances et des paramtres d'optimisation qui lui est propre.
Enfin, InnoDB est activement dvelopp alors que MyISAM est plus stable. On peut donc s'attendre voir de
nombreuses amliorations de performance arriver sur InnoDB.
InnoDB tant un systme plus complet que MyISAM, il dispose galement de plus de paramtres. Alors que MyISAM
est assez facile configurer, InnoDB demandera plus de temps pour obtenir un systme optimal.
La liste de tous les paramtres InnoDB est prsente sur cette page :
http://dev.mysql.com/doc/refman/5.0/en/innodb-parameters.html
- 31 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation
de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut
tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez
selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://thecodingmachine.developpez.com/tutoriels/web/demarche-diagnostic-et-optimisation-pour-ameliorer-performance-site-web/?page=page_1/
Dmarche de diagnostic et d'optimisation pour amliorer les performances d'un site Web. par
The Coding Machine (Expertise, dveloppement et conseil en Informatique (PHP)) (Blog)
Mme si cette liste est longue, si vous souhaitez faire du fine-tuning MySQL, nous vous conseillons de la parcourir
en entier, certains paramtres ayant des impacts sur d'autres.
Nous ne parcourons pas l'intgralit des paramtres dans ce livre blanc (ce n'est pas le sujet), mais allons prsenter
les principaux.
Dmarche de diagnostic et d'optimisation pour amliorer les performances d'un site Web. par
The Coding Machine (Expertise, dveloppement et conseil en Informatique (PHP)) (Blog)
La recommandation MySQL est de configurer ce paramtre deux fois le nombre de processeurs + le nombre
de disques .
Nous vous recommandons cependant d'effectuer des tests avec des valeurs trs diffrentes pour voir le
comportement de votre application. En effet, en augmentant le nombre de threads, vous augmentez la concurrence
et donc le risque de locks.
Lorsque la mise en place d'une des solutions prcdentes est coteuse, il est intressant d'examiner l'architecture
physique de la solution.
Les solutions associes l'infrastructure matrielle sont nombreuses et la plupart consistent augmenter le nombre
de serveurs.
Cette partie prsente quels sont les moyens d'amliorer les performances de votre application grce l'augmentation
des capacits matrielles.
- 33 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation
de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut
tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez
selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://thecodingmachine.developpez.com/tutoriels/web/demarche-diagnostic-et-optimisation-pour-ameliorer-performance-site-web/?page=page_1/
Dmarche de diagnostic et d'optimisation pour amliorer les performances d'un site Web. par
The Coding Machine (Expertise, dveloppement et conseil en Informatique (PHP)) (Blog)
6-A - Upgrade
Le principe de l'upgrade des serveurs est simple. Il s'agit d'augmenter de faon constante les performances physiques
de sa machine : ajouter de la RAM, augmenter la taille des disques ou ajouter des disques, augmenter la puissance
du ou des processeurs, utiliser un systme multi-curs .
Ces actions permettent d'augmenter les capacits du serveur pour accueillir un plus grand nombre de connexions
utilisateurs et/ou de calculs serveur. Une fois upgrad, le serveur web sera capable d'absorber une plus grande
charge.
BON SAVOIR : augmenter la puissance d'un serveur cote relativement peu tant
qu'on reste dans une puissance standard , mais le rapport cot/performance crot
exponentiellement ds que l'on sort de la norme.
Il est prfrable de rapidement s'orienter vers des solutions de clustering qui fournissent une architecture plus robuste
notamment en cas de panne. Aussi, il est intressant de dfinir un seuil partir duquel il convient de stopper l'upgrade,
pour dmarrer une stratgie de clustering.
6-B - Clustering
6-B-1 - Sparer Apache - MySQL
Pour beaucoup d'applications PHP-MySQL, l'accs aux donnes reprsente un point majeur de l'utilisation des
ressources serveurs (goulet d'tranglement). Or, dans le mme temps, l'application a un besoin non ngligeable
de ressources pour faire fonctionner l'application PHP. Dans de nombreux cas, ces deux demandes de ressources
simultanes peuvent crer des lenteurs, voire des dfaillances.
Une solution pour rsoudre ce problme est de sparer le serveur Apache, contenant l'application PHP, du serveur
MySQL contenant le Systme de Gestion de Base de Donnes (SGBD). Ainsi, les actions effectues sur l'un des
serveurs n'impacteront pas l'autre et les performances en seront amliores. Le SGBD tant dans de nombreux cas
le goulet d'tranglement d'un site web, il sera ici trait de faon ddie par un unique serveur qui n'aura que cette
charge grer.
BON SAVOIR : dans ce cas, la latence augmente. L'application ne doit pas effectuer
de trop nombreuses requtes par page.
- 34 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation
de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut
tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez
selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://thecodingmachine.developpez.com/tutoriels/web/demarche-diagnostic-et-optimisation-pour-ameliorer-performance-site-web/?page=page_1/
Dmarche de diagnostic et d'optimisation pour amliorer les performances d'un site Web. par
The Coding Machine (Expertise, dveloppement et conseil en Informatique (PHP)) (Blog)
Le load-balancing Apache permet de distribuer le trafic sur plusieurs serveurs. L'objectif est de multiplier le nombre de
serveurs capables d'hberger le site cible et ainsi de partager la charge relative aux actions utilisateurs sur plusieurs
serveurs.
La distribution sera effectue par un serveur ddi (le load-balancer). Pour les sites trs fort trafic, on aura recours
un botier physique (propos par les hbergeurs) afin de rediriger les accs au site web sur les diffrents serveurs. Un
paramtrage fin est galement ncessaire pour partager les donnes en cache, ainsi que les donnes sessions (APC,
Memcache). La base de donnes doit galement tre partage pour tre accessible des diffrents serveurs web.
BON SAVOIR :en plus d'amliorer les performances (plusieurs serveurs rpondent en
mme temps aux requtes utilisateurs), il y a une autre raison pour mettre en place cette
optimisation : la solution est beaucoup plus robuste. En effet, comme plusieurs serveurs
fonctionnent en parallle, si l'un d'entre eux est dfaillant, les autres sont susceptibles
de prendre le relais instantanment. En revanche, cela demande un suivi constant de
l'activit des serveurs en utilisant Nagios par exemple. Dans le cas contraire, un serveur
peut devenir indisponible sans toutefois alerter l'administrateur du site.
Note :la maintenance de la solution devient plus complexe du fait que les modifications effectues sur un serveur
doivent tre diffuses vers tous les autres.
Dans la plupart des cas d'utilisation d'un serveur MySQL, les requtes effectues sont des requtes de lecture, de
rcupration de listes de produits, d'informations personnelles. Ces demandes frquentes surchargent les serveurs
MySQL qui doivent grer par ailleurs les requtes d'insertion (INSERT) et de mise jour (UPDATE).
- 35 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation
de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut
tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez
selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://thecodingmachine.developpez.com/tutoriels/web/demarche-diagnostic-et-optimisation-pour-ameliorer-performance-site-web/?page=page_1/
Dmarche de diagnostic et d'optimisation pour amliorer les performances d'un site Web. par
The Coding Machine (Expertise, dveloppement et conseil en Informatique (PHP)) (Blog)
Une nouvelle solution d'optimisation d'architecture matrielle est de ddier diffrents serveurs MySQL des actions
prcises. Un serveur matre gre alors toutes les requtes d'INSERT et d'UPDATE, et un serveur esclave gre toutes
les requtes de slection. Ainsi, la charge du SGBD sera partage entre plusieurs serveurs. Pour conserver une
cohrence de donnes, le serveur esclave est rpliqu du serveur matre en temps rel.
BON SAVOIR :une solution qui n'amliore pas les performances mais qui augmente la
robustesse de la solution est le SQL Clustering. Le principe est de mettre disposition
un nouveau serveur SQL si le principal n'est plus disponible (crash, maintenance, etc.).
Cette architecture est base sur une rplication automatique des donnes du Systme de
Gestion de Base de Donnes. Le serveur courant est alors utilis pour grer l'ensemble
des actions du serveur web, pendant que le serveur de backup ne fait que recopier les
actions effectues sur le principal. L'avantage est que ce systme peut tre coupl une
utilisation des instances master/slave.
Pour simplifier, le Cloud Computing peut tre dfini comme le moyen d'excuter des tches de calcul en parallle
sur diffrents serveurs Ce qui est intressant dans le cadre de l'amlioration des performances, c'est la faon d'utiliser
cette puissance de calcul dynamiquement, en fonction de la charge serveur.
Il est trs frquent qu'un site Internet soit soumis des pics d'activit ; de ce fait, il n'est pas forcment ncessaire de
possder une structure matrielle maximale pendant les priodes d'activit faible, ou moindre, de votre site internet.
Le principe volutif du Cloud Computing , comme le propose Amazon (AWS - EC2), est de mettre disposition
de l'application une force de calcul supplmentaire (image de votre site web) quand vous en avez besoin. Ce besoin
trs spcifique peut tre dfini de diffrentes faons : l'utilisation du CPU du serveur, la charge mmoire du serveur
ou toutes autres donnes relative l'utilisation et la charge du serveur web. Toutes ces donnes peuvent tre
surveilles afin de dclencher l'utilisation de nouvelles ressources matrielles. Ainsi, votre infrastructure s'adaptera
automatiquement votre besoin.
BON SAVOIR : ce mouvement s'accompagne des bases de donnes NoSQL. Ces
bases de donnes sont moins simples requter mais elles se dupliquent facilement. En
fait, ces besoins sont tirs par les gants du Web (Google, Amazon, ...) qui ont besoin de
rechercher des informations qui ne sont pas ncessairement structures.
- 36 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation
de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut
tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez
selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://thecodingmachine.developpez.com/tutoriels/web/demarche-diagnostic-et-optimisation-pour-ameliorer-performance-site-web/?page=page_1/
Dmarche de diagnostic et d'optimisation pour amliorer les performances d'un site Web. par
The Coding Machine (Expertise, dveloppement et conseil en Informatique (PHP)) (Blog)
- 37 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation
de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright - . Aucune reproduction, mme partielle, ne peut
tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez
selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://thecodingmachine.developpez.com/tutoriels/web/demarche-diagnostic-et-optimisation-pour-ameliorer-performance-site-web/?page=page_1/