SlideShare ist ein Scribd-Unternehmen logo
1 von 18
Downloaden Sie, um offline zu lesen
{ Optimisation LAMP
Comment améliorer les
performances de votre application
LAMP
{ Optimisation LAMP
● Guillaume Plessis
Fondateur de IG technologie
Créateur du projet Dotdeb
Cloud Computing raisonné,
LAMP débridé
● Cyril Pierre de Geyer
Co-auteur de PHP 5 avancé
Vice président de l'AFUP
Évangéliste / Open Source
Tirs de charge, scénarios de
test, optimisation
{ Architecture pour nos tests
● Instance Amazon EC2 c1.medium :
● 2 x 2,4GHz Intel Pentium 4 Xeon (32bits)
● 1,7Go de mémoire vive
● Stockage réseau
● Apache 2.2 + PHP 5.3.3 + MySQL 5.1.51
● Drupal 6.19
{ Comment optimiser
1. Savoir ce qui se passe
2. Analyser
3. Simuler
4. Améliorer
{ 1. Savoir ce qui se passe :
Fichiers journaux & debug
Apache :
● Accès → Amélioration des scénarios de tests
● Erreur → Détection des erreurs applicatives
PHP :
● Erreur → Détection des erreurs applicatives
● Xdebug → Profiling
MySQL :
● Requêtes lentes & sans indexes
● Journal des requêtes → Amélioration des scénarios
de tests
{ 1. Savoir ce qui se passe :
Monitoring
Monitoring
● Objectifs :
disponibilité, stabilité
● Fournit des éléments
d’analyse pour le
profiling
● Détecter les
dysfonctionnements
● Anticiper le
dimensionnement
{ 1. Savoir ce qui se passe :
Monitoring
● De nombreux outils
existent :
● Nagios, Zabbix...
● Cacti, Munin...
● PHP : parent pauvre?
● Pinba, Zend Platform
{ 1. Savoir ce qui se passe :
Métriques à surveiller
● Les métriques à surveiller
● OS : CPU, RAM, réseau
● Apache :
– Requêtes par seconde
– temps de réponse
● PHP : Pinba
● MySQL :
– Requêtes par seconde
– connexions
– innodb_buffer_pool
{ 2. Analyser
Profiling
● Objectif :
performance
● Environnement
d’analyse plus lourd
(souvent inadapté à la
production),
● Détecter les goulots
d'étranglement
● Créez un
environnement
propice au profiling
● Attention aux coûts en
performances
● Outils : xdebug,
KcacheGrind,
webgrind, ZendServer
Mercredi 9h :
Deboguer son code – Xdebug
{ 3. Simuler
● Objectifs :
● Détecter les goulots
d'étranglements
● Qualifier une architecture
● Outils
● Jmeter, Funkload, Siege, ab
● Attention à rejouer les tests
dans le même contexte!
● Tir de charge de référence
{ 4. Améliorer :
PHP
● Optimiser les Opcodes
● Script PHP è Opcodes è Exécution
● Optimisation, ré-ordonnancement
● Mise en cache (attention à l'invalidation!)
● Outils : APC, Xcache, Zend Optimizer...
● Tir de charge après l'installation de APC
Mercredi 15h45 :
APC & Memcached the High
Performance Duo
{ 4. Améliorer :
le serveur Web
● Configuration selon la machine à disposition
● Apache :
– KeepAlive
– ServerLimit, MaxClients
– MaxRequestsPerChild
● PHP : un memory_limit réaliste
(2 Go Ram = max 16 scripts PHP 128Mo simultanés)
● Tir de charge après optimisation de Apache
{ 4. Améliorer :
le serveur Web
● Autres pistes
● Utilisez mod_gzip / mod_deflate pour optimiser
l'utilisation de CPU / bande passante
● Désinstaller les modules non utilisés (java,
python,...)
● Privilégier d'autres serveurs HTTP selon l'usage
– Nginx pour le contenu statique
● Utilisation d'un reverse-proxy cache HTTP
– Varnish
{ 4. Améliorer :
optimisations HTTP
● Énormément d'améliorations possibles
● Le but est toujours d'alléger le serveur Apache
● Quelques pistes
● Compression Gzip
● en-têtes Expire
● Etags
Mercredi 9h45 :
Un site web performant, tout est
dans le réseau et le navigateur
{ 4. Améliorer :
la base de données
● Choisir le bon système (Linux : 2.6, 64 bits)
● Choisir la bonne distribution de MySQL
● Choisir le bon moteur de stockage
MyISAM, InnoDB / XtraDB, HEAP, Archives...
● Optimisation des requêtes et du modèle (via
logs)
● Réplication (arbre maître-esclave, maître-maître)
● Sharding
{ 4. Améliorer :
l'architecture
● Scalabilité
● Verticale : augmentation de la puissance du serveur
● Horizontale : augmentation du nombre de serveurs
● Ouverture vers le Cloud
Mercredi 11h00 :
Le cloud computing pour PHP
{ 4. Améliorer :
exemple d'architecture
{ Questions?
● gui@php.net
● w_a_s_t_e
● cyril@php.net
● cyrilpdg
Cycle « optimisation »
● Retour d'expérience de Weka – maintenant
● Xdebug – Demain 9h
● Un site web performant, tout est dans le réseau et le navigateur – Demain 9h45
● Le cloud computing pour PHP – Demain 11h
● Le paradoxe des performances de PHP – Demain 14h45
● APC & Memcached the High Performance Duo – Demain 15h45
Références et remerciements : wikipedia, milamber, oxalide, elroubio, dotdeb,
l'afup, les équipes de PHP, de MySQL, d'Apache, au monde de l'OpenSource.

Weitere ähnliche Inhalte

Was ist angesagt?

05 2014-varnish
05 2014-varnish05 2014-varnish
05 2014-varnishthomaslc
 
Automatisez votre gestion de MongoDB avec MMS
Automatisez votre gestion de MongoDB avec MMSAutomatisez votre gestion de MongoDB avec MMS
Automatisez votre gestion de MongoDB avec MMSMongoDB
 
Utiliser pleinement le navigateur et les nouveaux clients web - AFUP 2007
Utiliser pleinement le navigateur et les nouveaux clients web  - AFUP 2007Utiliser pleinement le navigateur et les nouveaux clients web  - AFUP 2007
Utiliser pleinement le navigateur et les nouveaux clients web - AFUP 2007Eric D.
 
Big Data Paris 2015 - Cassandra chez Chronopost
Big Data Paris 2015 - Cassandra chez ChronopostBig Data Paris 2015 - Cassandra chez Chronopost
Big Data Paris 2015 - Cassandra chez ChronopostAlexander DEJANOVSKI
 
Direct memory 3_devoxx_fr_2012-2.04.18
Direct memory 3_devoxx_fr_2012-2.04.18Direct memory 3_devoxx_fr_2012-2.04.18
Direct memory 3_devoxx_fr_2012-2.04.18Benoit Perroud
 
Node.js et les nouvelles technologies javascript
Node.js et les nouvelles technologies javascriptNode.js et les nouvelles technologies javascript
Node.js et les nouvelles technologies javascriptKhalid Jebbari
 
Mariadb pour les developpeurs - OSDC
Mariadb pour les developpeurs - OSDCMariadb pour les developpeurs - OSDC
Mariadb pour les developpeurs - OSDCChristophe Villeneuve
 
Postman - Dev/var 15
Postman - Dev/var 15Postman - Dev/var 15
Postman - Dev/var 15Jonathan SAEZ
 
2010 12-theme-02-dhcp-mdns
2010 12-theme-02-dhcp-mdns2010 12-theme-02-dhcp-mdns
2010 12-theme-02-dhcp-mdnsJasser Kouki
 
Event sourcing avec Kafka, UPEC
Event sourcing avec Kafka, UPECEvent sourcing avec Kafka, UPEC
Event sourcing avec Kafka, UPECSylia Baraka
 
Drupal 8, symfony
Drupal 8, symfonyDrupal 8, symfony
Drupal 8, symfonyjeUXdiCode
 
Nginx - Serveur HTTP haute performances
Nginx - Serveur HTTP haute performancesNginx - Serveur HTTP haute performances
Nginx - Serveur HTTP haute performancesPascal Armand
 
2014.12.11 - TECH CONF #3 - Présentation Node.js
2014.12.11 - TECH CONF #3 - Présentation Node.js2014.12.11 - TECH CONF #3 - Présentation Node.js
2014.12.11 - TECH CONF #3 - Présentation Node.jsTelecomValley
 
Meetup kafka 21 Novembre 2017
Meetup kafka 21 Novembre 2017Meetup kafka 21 Novembre 2017
Meetup kafka 21 Novembre 2017Saïd Bouras
 
Realtime Web avec Kafka, Spark et Mesos
Realtime Web avec Kafka, Spark et MesosRealtime Web avec Kafka, Spark et Mesos
Realtime Web avec Kafka, Spark et Mesosebiznext
 
Etes vous prêts pour le succes ?
Etes vous prêts pour le succes ?Etes vous prêts pour le succes ?
Etes vous prêts pour le succes ?Steven VAN POECK
 
Migrations PHP 5 - Solutions linux 2009
Migrations PHP 5 - Solutions linux 2009Migrations PHP 5 - Solutions linux 2009
Migrations PHP 5 - Solutions linux 2009Eric D.
 
Un environnement de développement solide avec wamp
Un environnement de développement solide avec wampUn environnement de développement solide avec wamp
Un environnement de développement solide avec wampNicolas Beauvais
 

Was ist angesagt? (19)

05 2014-varnish
05 2014-varnish05 2014-varnish
05 2014-varnish
 
Automatisez votre gestion de MongoDB avec MMS
Automatisez votre gestion de MongoDB avec MMSAutomatisez votre gestion de MongoDB avec MMS
Automatisez votre gestion de MongoDB avec MMS
 
Utiliser pleinement le navigateur et les nouveaux clients web - AFUP 2007
Utiliser pleinement le navigateur et les nouveaux clients web  - AFUP 2007Utiliser pleinement le navigateur et les nouveaux clients web  - AFUP 2007
Utiliser pleinement le navigateur et les nouveaux clients web - AFUP 2007
 
Big Data Paris 2015 - Cassandra chez Chronopost
Big Data Paris 2015 - Cassandra chez ChronopostBig Data Paris 2015 - Cassandra chez Chronopost
Big Data Paris 2015 - Cassandra chez Chronopost
 
Direct memory 3_devoxx_fr_2012-2.04.18
Direct memory 3_devoxx_fr_2012-2.04.18Direct memory 3_devoxx_fr_2012-2.04.18
Direct memory 3_devoxx_fr_2012-2.04.18
 
Node.js et les nouvelles technologies javascript
Node.js et les nouvelles technologies javascriptNode.js et les nouvelles technologies javascript
Node.js et les nouvelles technologies javascript
 
Mariadb pour les developpeurs - OSDC
Mariadb pour les developpeurs - OSDCMariadb pour les developpeurs - OSDC
Mariadb pour les developpeurs - OSDC
 
Postman - Dev/var 15
Postman - Dev/var 15Postman - Dev/var 15
Postman - Dev/var 15
 
2010 12-theme-02-dhcp-mdns
2010 12-theme-02-dhcp-mdns2010 12-theme-02-dhcp-mdns
2010 12-theme-02-dhcp-mdns
 
Event sourcing avec Kafka, UPEC
Event sourcing avec Kafka, UPECEvent sourcing avec Kafka, UPEC
Event sourcing avec Kafka, UPEC
 
Drupal 8, symfony
Drupal 8, symfonyDrupal 8, symfony
Drupal 8, symfony
 
Nginx - Serveur HTTP haute performances
Nginx - Serveur HTTP haute performancesNginx - Serveur HTTP haute performances
Nginx - Serveur HTTP haute performances
 
2014.12.11 - TECH CONF #3 - Présentation Node.js
2014.12.11 - TECH CONF #3 - Présentation Node.js2014.12.11 - TECH CONF #3 - Présentation Node.js
2014.12.11 - TECH CONF #3 - Présentation Node.js
 
Meetup kafka 21 Novembre 2017
Meetup kafka 21 Novembre 2017Meetup kafka 21 Novembre 2017
Meetup kafka 21 Novembre 2017
 
Realtime Web avec Kafka, Spark et Mesos
Realtime Web avec Kafka, Spark et MesosRealtime Web avec Kafka, Spark et Mesos
Realtime Web avec Kafka, Spark et Mesos
 
Etes vous prêts pour le succes ?
Etes vous prêts pour le succes ?Etes vous prêts pour le succes ?
Etes vous prêts pour le succes ?
 
Migrations PHP 5 - Solutions linux 2009
Migrations PHP 5 - Solutions linux 2009Migrations PHP 5 - Solutions linux 2009
Migrations PHP 5 - Solutions linux 2009
 
Le nouveau AMP : apache mariadb php
Le nouveau AMP : apache mariadb phpLe nouveau AMP : apache mariadb php
Le nouveau AMP : apache mariadb php
 
Un environnement de développement solide avec wamp
Un environnement de développement solide avec wampUn environnement de développement solide avec wamp
Un environnement de développement solide avec wamp
 

Ähnlich wie Optimisation LAMP

Tests de performances d'une application Java EE
Tests de performances d'une application Java EETests de performances d'une application Java EE
Tests de performances d'une application Java EEAntonio Gomes Rodrigues
 
Les performances sur des développements PhP
Les performances sur des développements PhPLes performances sur des développements PhP
Les performances sur des développements PhPneuros
 
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...Normandy JUG
 
Construire un data lake managé - GDG Paris - Juin 2019
Construire un data lake managé - GDG Paris - Juin 2019Construire un data lake managé - GDG Paris - Juin 2019
Construire un data lake managé - GDG Paris - Juin 2019Jean-Baptiste Claramonte
 
Alphorm.com Support de la Formation PHP MySQL
Alphorm.com Support de la Formation PHP MySQLAlphorm.com Support de la Formation PHP MySQL
Alphorm.com Support de la Formation PHP MySQLAlphorm
 
Bonnes pratiques de developpement en PHP
Bonnes pratiques de developpement en PHPBonnes pratiques de developpement en PHP
Bonnes pratiques de developpement en PHPPascal MARTIN
 
Drupal et le NoSQL - drupagora 2011
Drupal et le NoSQL - drupagora 2011Drupal et le NoSQL - drupagora 2011
Drupal et le NoSQL - drupagora 2011OSInet
 
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...XavierPestel
 
08 01 mise en place d'un serveur web
08 01 mise en place d'un serveur web08 01 mise en place d'un serveur web
08 01 mise en place d'un serveur webNoël
 
Monitoring d'applications/environnements PHP : APM et Pinba
Monitoring d'applications/environnements PHP : APM et PinbaMonitoring d'applications/environnements PHP : APM et Pinba
Monitoring d'applications/environnements PHP : APM et PinbaIdaf_1er
 
I le langage java d'una manière avancée introduction
I  le langage java d'una manière avancée introductionI  le langage java d'una manière avancée introduction
I le langage java d'una manière avancée introductionsabrine_hamdi
 
Autour de Node.js - TechConf#3
Autour de Node.js - TechConf#3Autour de Node.js - TechConf#3
Autour de Node.js - TechConf#3Luc Juggery
 
Introduction à CakePHP
Introduction à CakePHPIntroduction à CakePHP
Introduction à CakePHPPierre MARTIN
 
Perfug BOF devoxx2017.pptx
Perfug BOF devoxx2017.pptxPerfug BOF devoxx2017.pptx
Perfug BOF devoxx2017.pptxMarc Bojoly
 
Morning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesMorning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesOxalide
 
Oxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceOxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceLudovic Piot
 
Réussir une montée en charge avec MongoDB
Réussir une montée en charge avec MongoDBRéussir une montée en charge avec MongoDB
Réussir une montée en charge avec MongoDB MongoDB
 
Apache Cassandra - Concepts et fonctionnalités
Apache Cassandra - Concepts et fonctionnalitésApache Cassandra - Concepts et fonctionnalités
Apache Cassandra - Concepts et fonctionnalitésRomain Hardouin
 

Ähnlich wie Optimisation LAMP (20)

Tests de performances d'une application Java EE
Tests de performances d'une application Java EETests de performances d'une application Java EE
Tests de performances d'une application Java EE
 
Les performances sur des développements PhP
Les performances sur des développements PhPLes performances sur des développements PhP
Les performances sur des développements PhP
 
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
 
Construire un data lake managé - GDG Paris - Juin 2019
Construire un data lake managé - GDG Paris - Juin 2019Construire un data lake managé - GDG Paris - Juin 2019
Construire un data lake managé - GDG Paris - Juin 2019
 
Alphorm.com Support de la Formation PHP MySQL
Alphorm.com Support de la Formation PHP MySQLAlphorm.com Support de la Formation PHP MySQL
Alphorm.com Support de la Formation PHP MySQL
 
Bonnes pratiques de developpement en PHP
Bonnes pratiques de developpement en PHPBonnes pratiques de developpement en PHP
Bonnes pratiques de developpement en PHP
 
Drupal et le NoSQL - drupagora 2011
Drupal et le NoSQL - drupagora 2011Drupal et le NoSQL - drupagora 2011
Drupal et le NoSQL - drupagora 2011
 
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
 
08 01 mise en place d'un serveur web
08 01 mise en place d'un serveur web08 01 mise en place d'un serveur web
08 01 mise en place d'un serveur web
 
Monitoring d'applications/environnements PHP : APM et Pinba
Monitoring d'applications/environnements PHP : APM et PinbaMonitoring d'applications/environnements PHP : APM et Pinba
Monitoring d'applications/environnements PHP : APM et Pinba
 
Infrastructure as code drupal
Infrastructure as code drupalInfrastructure as code drupal
Infrastructure as code drupal
 
I le langage java d'una manière avancée introduction
I  le langage java d'una manière avancée introductionI  le langage java d'una manière avancée introduction
I le langage java d'una manière avancée introduction
 
Autour de Node.js - TechConf#3
Autour de Node.js - TechConf#3Autour de Node.js - TechConf#3
Autour de Node.js - TechConf#3
 
kubernetes, pourquoi et comment
kubernetes, pourquoi et commentkubernetes, pourquoi et comment
kubernetes, pourquoi et comment
 
Introduction à CakePHP
Introduction à CakePHPIntroduction à CakePHP
Introduction à CakePHP
 
Perfug BOF devoxx2017.pptx
Perfug BOF devoxx2017.pptxPerfug BOF devoxx2017.pptx
Perfug BOF devoxx2017.pptx
 
Morning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesMorning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slides
 
Oxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceOxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performance
 
Réussir une montée en charge avec MongoDB
Réussir une montée en charge avec MongoDBRéussir une montée en charge avec MongoDB
Réussir une montée en charge avec MongoDB
 
Apache Cassandra - Concepts et fonctionnalités
Apache Cassandra - Concepts et fonctionnalitésApache Cassandra - Concepts et fonctionnalités
Apache Cassandra - Concepts et fonctionnalités
 

Optimisation LAMP

  • 1. { Optimisation LAMP Comment améliorer les performances de votre application LAMP
  • 2. { Optimisation LAMP ● Guillaume Plessis Fondateur de IG technologie Créateur du projet Dotdeb Cloud Computing raisonné, LAMP débridé ● Cyril Pierre de Geyer Co-auteur de PHP 5 avancé Vice président de l'AFUP Évangéliste / Open Source Tirs de charge, scénarios de test, optimisation
  • 3. { Architecture pour nos tests ● Instance Amazon EC2 c1.medium : ● 2 x 2,4GHz Intel Pentium 4 Xeon (32bits) ● 1,7Go de mémoire vive ● Stockage réseau ● Apache 2.2 + PHP 5.3.3 + MySQL 5.1.51 ● Drupal 6.19
  • 4. { Comment optimiser 1. Savoir ce qui se passe 2. Analyser 3. Simuler 4. Améliorer
  • 5. { 1. Savoir ce qui se passe : Fichiers journaux & debug Apache : ● Accès → Amélioration des scénarios de tests ● Erreur → Détection des erreurs applicatives PHP : ● Erreur → Détection des erreurs applicatives ● Xdebug → Profiling MySQL : ● Requêtes lentes & sans indexes ● Journal des requêtes → Amélioration des scénarios de tests
  • 6. { 1. Savoir ce qui se passe : Monitoring Monitoring ● Objectifs : disponibilité, stabilité ● Fournit des éléments d’analyse pour le profiling ● Détecter les dysfonctionnements ● Anticiper le dimensionnement
  • 7. { 1. Savoir ce qui se passe : Monitoring ● De nombreux outils existent : ● Nagios, Zabbix... ● Cacti, Munin... ● PHP : parent pauvre? ● Pinba, Zend Platform
  • 8. { 1. Savoir ce qui se passe : Métriques à surveiller ● Les métriques à surveiller ● OS : CPU, RAM, réseau ● Apache : – Requêtes par seconde – temps de réponse ● PHP : Pinba ● MySQL : – Requêtes par seconde – connexions – innodb_buffer_pool
  • 9. { 2. Analyser Profiling ● Objectif : performance ● Environnement d’analyse plus lourd (souvent inadapté à la production), ● Détecter les goulots d'étranglement ● Créez un environnement propice au profiling ● Attention aux coûts en performances ● Outils : xdebug, KcacheGrind, webgrind, ZendServer Mercredi 9h : Deboguer son code – Xdebug
  • 10. { 3. Simuler ● Objectifs : ● Détecter les goulots d'étranglements ● Qualifier une architecture ● Outils ● Jmeter, Funkload, Siege, ab ● Attention à rejouer les tests dans le même contexte! ● Tir de charge de référence
  • 11. { 4. Améliorer : PHP ● Optimiser les Opcodes ● Script PHP è Opcodes è Exécution ● Optimisation, ré-ordonnancement ● Mise en cache (attention à l'invalidation!) ● Outils : APC, Xcache, Zend Optimizer... ● Tir de charge après l'installation de APC Mercredi 15h45 : APC & Memcached the High Performance Duo
  • 12. { 4. Améliorer : le serveur Web ● Configuration selon la machine à disposition ● Apache : – KeepAlive – ServerLimit, MaxClients – MaxRequestsPerChild ● PHP : un memory_limit réaliste (2 Go Ram = max 16 scripts PHP 128Mo simultanés) ● Tir de charge après optimisation de Apache
  • 13. { 4. Améliorer : le serveur Web ● Autres pistes ● Utilisez mod_gzip / mod_deflate pour optimiser l'utilisation de CPU / bande passante ● Désinstaller les modules non utilisés (java, python,...) ● Privilégier d'autres serveurs HTTP selon l'usage – Nginx pour le contenu statique ● Utilisation d'un reverse-proxy cache HTTP – Varnish
  • 14. { 4. Améliorer : optimisations HTTP ● Énormément d'améliorations possibles ● Le but est toujours d'alléger le serveur Apache ● Quelques pistes ● Compression Gzip ● en-têtes Expire ● Etags Mercredi 9h45 : Un site web performant, tout est dans le réseau et le navigateur
  • 15. { 4. Améliorer : la base de données ● Choisir le bon système (Linux : 2.6, 64 bits) ● Choisir la bonne distribution de MySQL ● Choisir le bon moteur de stockage MyISAM, InnoDB / XtraDB, HEAP, Archives... ● Optimisation des requêtes et du modèle (via logs) ● Réplication (arbre maître-esclave, maître-maître) ● Sharding
  • 16. { 4. Améliorer : l'architecture ● Scalabilité ● Verticale : augmentation de la puissance du serveur ● Horizontale : augmentation du nombre de serveurs ● Ouverture vers le Cloud Mercredi 11h00 : Le cloud computing pour PHP
  • 17. { 4. Améliorer : exemple d'architecture
  • 18. { Questions? ● gui@php.net ● w_a_s_t_e ● cyril@php.net ● cyrilpdg Cycle « optimisation » ● Retour d'expérience de Weka – maintenant ● Xdebug – Demain 9h ● Un site web performant, tout est dans le réseau et le navigateur – Demain 9h45 ● Le cloud computing pour PHP – Demain 11h ● Le paradoxe des performances de PHP – Demain 14h45 ● APC & Memcached the High Performance Duo – Demain 15h45 Références et remerciements : wikipedia, milamber, oxalide, elroubio, dotdeb, l'afup, les équipes de PHP, de MySQL, d'Apache, au monde de l'OpenSource.

Hinweis der Redaktion

  1. Je vous propose de commencer notre premier opus des conférences dédiées à l'optimisation LAMP (Linux Apa...) avec une session un peu généraliste. Introduction par Cyril
  2. Cyril présente Guillaume et vice versa.
  3. Cyril : Pour illustrer cette conférence nous avons décidé de nous baser sur du concret. Nous avons donc installé sur une machine configuré par défaut un drupal configuré par défaut. Vous pouvez voir ici les caractéristiques principales de la machine. L'idée étant de vous montrer au fil de nos réflexions sur l'optimisation ce qu'il est possible de faire. Gui : C'est une configuration serveur classique telle qu'on peut la trouver chez un hébergeur lambda juste après l'avoir commandée.
  4. Être capable de savoir ce qui se passe Être capable de simuler Analyse des données recueillies : recherche des goulots d'étranglements potentiels Améliorations de la plateforme : PHP, Apache, MySQL, architecture, HTML, infrastructure Cyril : parle
  5. Intro sur ce qui permet de savoir ce qu'il se passe. Focus sur les fichiers de logs. Log accès Apache => création de scenarii de test Log erreur Apache => détection des erreurs applicatives Idem pour PHP Xdebug pour le profiling Epurez vos fichiers journaux des bugs (error.log = 0 ligne !) Définissez des niveaux d’alertes Centralisez vos fichiers de logs (Syslog) Guillaume reprend en expliquant que les logs ne sont pas exploitable au quotidien quand on doit gérer plusieurs machines. En général on a des outils des monitoring et on revient sur les logs pour analyse des incidents.
  6. Monitoring : Connecté aux équipes d'exploitation Détecter les dysfonctionnements pour éviter que Nagios devienne une guirlande de Noël Anticiper le dimensionnement de vos machines quand vous observez l'augmentation d'une métrique Guillaume parle Cyril termine : Et toi dans ton travail d'admin sysn quels outils utilisais tu ?
  7. S'il est aisé de surveiller les couches matérielles, système et réseau, la surveillance du serveur applicatif est plus délicate. Quant à la surveillance de l'application elle-même, elle passe souvent par des sondes « home-made » Guillaume parle Cyril termine : ok pour les outils et je surveille quoi ?
  8. Guillaume fait le listing. Cyril reprend en indiquant que Munin par exemple inclus facilement des sondes sur ces métriques.
  9. Monitoring : Connecté aux équipes d’astreinte (24/7)
  10. Focus sur Jmeter, présenter l'enregistreur de scenarios *indiquer que les logs d'accès à Apache peuvent permettre de créer un scenario de test Guillaume : tir de charge
  11. Cyril gère Tirs de charge par Gui puis Cyril parle du cache avec PHP, cache de page, cache 'objet. Soit dans APC soit dans memcache ou fichier. reprise de la parole par Gui pour Apache
  12. Guillaume édite son fichier de conf à l'écran et présente les différentes configurations. Cyril : KeepAlive c'est une sorte de tuyaux qu'on laisse ouvert ? Tir de charge commenté puis Cyril : Mais apache c'est lourd non ? XX Mais dans ce cas est ce qu'on pourrait pas utiliser un serveur plus rapide qu'Apache pour les documents statiques.
  13. Cela n'améliore pas forcément la rapidité mais permet à Apache de répondre à plus de requêtes.
  14. Cyril reprend. Si plus de 25-30 alors Gui détaille
  15. Guillaume
  16. Horizontale : Cyril parle des problèmes liés aux sessions.