SlideShare une entreprise Scribd logo
1  sur  32
Télécharger pour lire hors ligne
êtes-vous prêts pour le succès ?
Huh !? Qui ça ?
     Steven VAN POECK

                                      stevenvanpoeck




autodidacte, 12 ans de PHP, entre   http://joind.in/4352
              autres
should i stay or should i go* ?




                                  * the clash, 1981
le début
quelques utilisateurs




                     Apache
                  2.2.16 + mod
                   PHP 5.3.3 +
                  MySQL 5.1.49



Performance :
Disponibilité :
Coût :
# requests                                    Resp time
  250                                                 10



  200                                                 8



  150                                                 6
                                                            Resp Time (secs)
                                                            OKAY
                                                            Failed
  100                                                 4



   50                                                 2



    0                                                 0
        5                       10               25
                      # Concurrent requests


 Max connexions simultanées : 9                   ~4 500 utilisateurs
un peu plus d'utilisateurs




                     Apache
                  2.2.16 + mod
                   PHP 5.3.3 +
                  MySQL 5.1.49



Performance :
Disponibilité :
Coût :
un peu plus d'utilisateurs




                     Apache
                  2.2.16 + mod
                   PHP 5.3.3 +
                  MySQL 5.1.49



Performance :
Disponibilité :
Coût :
●   solutions
    ●   utilisez les dernières versions stables des briques logicielles
    ●   distribution de charges : séparation serveur web / db
    ●   côté disponibilité : FastCGI pour PHP
    ●   côté ressources : nginx
    ●   tuning serveur Web (Nginx)
         –   worker_processes → 1 par CPU mais plus de 4 est inutile
         –   worker_connections → 2048
         –   keepalive_timeout → entre 10 et 20
         –   access_logs off → réduction I/O (utilisez Google Analytics pour
             stats)
         –   error_log <LOGFILE> error|crit → réduction I/O (désactivez avec
             error_log /dev/null crit)
●
    solutions (suite)
    ●   tuning PHP
        –   cache op-code PHP (APC, eAccelerator, Zend Server)
        –   utilisez la dernière version majeure stable !
        –   template caching (ex : Smarty)
        –   compilation « maison » sans extensions inutilisées
        –   always_populate_raw_post_data = Off (utilisez php://input)
        –   max_execution_time → le plus petit possible
        –   memory_limit → adapté à vos scripts
        –   realpath_cache_size → plus si beaucoup de fichiers
        –   realpath_cache_ttl → le plus élevé possible
        –   enlever Suhosin patch
un peu plus d'utilisateurs




         MySQL             Nginx 1.0.8 +
         5.5.16            FastCGI PHP
                              5.3.8




Performance :
Disponibilité :
Coût :
# requests                                                   Resp time
  1200                                                            12



  1000                                                            10



   800                                                            8

                                                                          Resp Time (secs)
   600                                                            6       OKAY
                                                                          Failed

   400                                                            4



   200                                                            2



    0                                                              0
         5   10   25   50    75     100    125   150   175      200
                       # Concurrent requests


 Max connexions simultanées : 27                               ~13 000 utilisateurs
encore plus d'utilisateurs




         MySQL             Nginx 1.0.8 +
         5.5.16            FastCGI PHP
                              5.3.8




Performance :
Disponibilité :
Coût :
encore plus d'utilisateurs




Performance :
Disponibilité :
Coût :
●   solutions
    ●   ajout de RAM sur le serveur MySQL
    ●   tuning MySQL
         –   utilisez InnoDB (rowlock)
         –   connection_timeout → le plus bas possible
         –   skip_name_resolve = 1 → réduction appels réseau
         –   log = /dev/null → réduction I/O
         –   slow_query_log = 1 → surveillance
    ●   cache résultats brutes des requêtes
         –   solution ad-hoc dans le code
         –   extension AdoDb + memcache
    ●   optimisation du code
         –   exit(ORM);
         –   traque et élimination des requêtes dans des boucles
exemple solution ad-hoc dans le code :
public function query($sql) {
    static $qCache = array(); // Stockage

    $qSig = md5($sql); // Cle unique pour la requete

    // On retourne le resultat directement
    if (array_key_exists($qSig, $qCache)) {
        return $qCache[$qSig];
    }

    $rs = $this->db->query($sql); // Requete en base

    $qCache[$qSig] = $rs; // Mise en cache

    return $rs; // On retourne le resultat
}
encore plus d'utilisateurs


                   memcache




Performance :
Disponibilité :
Coût :
# requests                                                   Resp time
  1200                                                            12



  1000                                                            10



   800                                                            8

                                                                          Resp Time (secs)
   600                                                            6       OKAY
                                                                          Failed

   400                                                            4



   200                                                            2



    0                                                              0
         5   10   25   50    75     100    125   150   175      200
                       # Concurrent requests


 Max connexions simultanées : 45                               ~22 000 utilisateurs
toujours plus d'utilisateurs




Performance :
Disponibilité :
Coût :
toujours plus d'utilisateurs




Performance :
Disponibilité :
Coût :
●
    solutions
    ●
        ajout de serveurs frontaux
    ●
        load balancer
    ●
        sharding pour la base de données
    ●
        failover pour les MySQL
toujours plus d'utilisateurs

                  sharding
                                       Load
1             1                       Balancer


2             2

3             3
       failover




Performance :
Disponibilité :
Coût :
# requests                                                         Resp time
  3000                                                                  12



  2500                                                                  10



  2000                                                                  8

                                                                               Resp Time
  1500                                                                  6      OKAY
                                                                               Failed

  1000                                                                  4



   500                                                                  2



    0                                                                    0
         5   10   25   50    75     100    125   150   175   200      225

                        # Concurrent requests


 Max connexions simultanées : 110                             ~50 000 utilisateurs
le succès est au rendez-vous !


1             1

2             2

3             3




Performance :
Disponibilité :
Coût :
le succès est au rendez-vous !


1             1

2             2

3             3




Performance :
Disponibilité :
Coût :
●
    solutions
    ●
        perfomances & disponibilité
        –   HTTP caching (Varnish, Squid, Nginx…)
        –   content distribution network (CDN)
le succès est au rendez-vous !
                                       HTTP cache
1              1


2              2


3              3




                                 CDN




    Performance :
    Disponibilité :
    Coût :
# requests                                                                                    Resp time
  6000                                                                                               24



  5000                                                                                               20



  4000                                                                                               16

                                                                                                            Resp Time
  3000                                                                                               12     OKAY
                                                                                                            Failed

  2000                                                                                               8



  1000                                                                                               4



    0                                                                                                 0
         5   10   25   50   75   100   125   150   175   200   225   250   275   300   325   350   375
                                       # Concurrent requests

 Max connexions simultanées : 175                                                            ~85 000 utilisateurs
mais encore ?
●
    noSQL
    ●
        MongoDb : http://www.mongodb.org/
    ●
        CouchDb : http://couchdb.apache.org/
    ●
        CouchBase : http://www.couchbase.org/
    ●
        ...
●
    ze nuage (Amazon, Azure, Eucalyptus, Google apps...)
questions ?
●   Références:
    ●   Dernières versions briques logicielles
         –   Debian : http://dotdeb.org
         –   PHP : http://www.php.net
    ●
        Tuning PHP / Nginx :
         –   http://blog.martinfjordvald.com/2011/04/optimizing-nginx-for-high-traffic-loads/
         –   http://php.net/manual/en/ini.core.php
         –   http://talks.php.net/show/perf_tunning
         –   http://phplens.com/lens/adodb/docs-adodb.htm#memcache
    ●
        Load balancing : http://en.wikipedia.org/wiki/Load_balancing_(computing)
    ●
        Optimisation MySQL : http://www.slideshare.net/ligaya/dpc-tutorial
    ●
        Sharding : http://en.wikipedia.org/wiki/Shard_(database_architecture)
    ●
        Failover : http://en.wikipedia.org/wiki/Failover
    ●   Memcached : http://memcached.org/
    ●   CDN : http://en.wikipedia.org/wiki/Content_delivery_network
    ●   HTTP cache :
         –   http://en.wikipedia.org/wiki/HTTP_accelerator
         –   https://www.varnish-cache.org/
         –   http://nginx.net/
         –   http://www.squid-cache.org/

Contenu connexe

Tendances

PostgreSQL sous linux
PostgreSQL sous linuxPostgreSQL sous linux
PostgreSQL sous linuxKhalid ALLILI
 
Tout sur les solutions de Haute Disponibilité et Disaster Recovery de SQL Ser...
Tout sur les solutions de Haute Disponibilité et Disaster Recovery de SQL Ser...Tout sur les solutions de Haute Disponibilité et Disaster Recovery de SQL Ser...
Tout sur les solutions de Haute Disponibilité et Disaster Recovery de SQL Ser...Microsoft Technet France
 
Introductions Aux Servlets
Introductions Aux ServletsIntroductions Aux Servlets
Introductions Aux ServletsFrançois Charoy
 
les servlets-java EE
les  servlets-java EEles  servlets-java EE
les servlets-java EEYassine Badri
 
Memcached, une solution de cache par excellence
Memcached, une solution de cache par excellenceMemcached, une solution de cache par excellence
Memcached, une solution de cache par excellenceMehdi Mehni
 
Tout sur les solutions de haute disponibilité et disaster recovery de sql ser...
Tout sur les solutions de haute disponibilité et disaster recovery de sql ser...Tout sur les solutions de haute disponibilité et disaster recovery de sql ser...
Tout sur les solutions de haute disponibilité et disaster recovery de sql ser...Christophe Laporte
 
Développeurs, cachez-moi ça ! (Paris Web 2011)
Développeurs, cachez-moi ça ! (Paris Web 2011)Développeurs, cachez-moi ça ! (Paris Web 2011)
Développeurs, cachez-moi ça ! (Paris Web 2011)Hugo Hamon
 
cours j2ee -présentation
cours  j2ee -présentationcours  j2ee -présentation
cours j2ee -présentationYassine Badri
 
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...Jean-Laurent de Morlhon
 
Alphorm.com Formation PostgreSQL, la Haute Disponibilité
Alphorm.com Formation PostgreSQL, la Haute DisponibilitéAlphorm.com Formation PostgreSQL, la Haute Disponibilité
Alphorm.com Formation PostgreSQL, la Haute DisponibilitéAlphorm
 
Presentation Tomcat Load Balancer
Presentation Tomcat Load BalancerPresentation Tomcat Load Balancer
Presentation Tomcat Load Balancertarkaus
 
Run java vs ruby
Run java vs rubyRun java vs ruby
Run java vs rubypinguin666
 
eZ publish - Publication instantanée et fort trafic web
eZ publish - Publication instantanée et fort trafic webeZ publish - Publication instantanée et fort trafic web
eZ publish - Publication instantanée et fort trafic webGauthier Garnier
 

Tendances (20)

PostgreSQL sous linux
PostgreSQL sous linuxPostgreSQL sous linux
PostgreSQL sous linux
 
Tout sur les solutions de Haute Disponibilité et Disaster Recovery de SQL Ser...
Tout sur les solutions de Haute Disponibilité et Disaster Recovery de SQL Ser...Tout sur les solutions de Haute Disponibilité et Disaster Recovery de SQL Ser...
Tout sur les solutions de Haute Disponibilité et Disaster Recovery de SQL Ser...
 
Les Servlets et JSP
Les Servlets et JSPLes Servlets et JSP
Les Servlets et JSP
 
Introductions Aux Servlets
Introductions Aux ServletsIntroductions Aux Servlets
Introductions Aux Servlets
 
APACHE HTTP
APACHE HTTPAPACHE HTTP
APACHE HTTP
 
Pgbadger
PgbadgerPgbadger
Pgbadger
 
Serveur Web (1)
Serveur Web (1)Serveur Web (1)
Serveur Web (1)
 
les servlets-java EE
les  servlets-java EEles  servlets-java EE
les servlets-java EE
 
Memcached, une solution de cache par excellence
Memcached, une solution de cache par excellenceMemcached, une solution de cache par excellence
Memcached, une solution de cache par excellence
 
Tout sur les solutions de haute disponibilité et disaster recovery de sql ser...
Tout sur les solutions de haute disponibilité et disaster recovery de sql ser...Tout sur les solutions de haute disponibilité et disaster recovery de sql ser...
Tout sur les solutions de haute disponibilité et disaster recovery de sql ser...
 
Serveurs
ServeursServeurs
Serveurs
 
Développeurs, cachez-moi ça ! (Paris Web 2011)
Développeurs, cachez-moi ça ! (Paris Web 2011)Développeurs, cachez-moi ça ! (Paris Web 2011)
Développeurs, cachez-moi ça ! (Paris Web 2011)
 
Soap
SoapSoap
Soap
 
cours j2ee -présentation
cours  j2ee -présentationcours  j2ee -présentation
cours j2ee -présentation
 
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...
 
Adsl cisco
Adsl ciscoAdsl cisco
Adsl cisco
 
Alphorm.com Formation PostgreSQL, la Haute Disponibilité
Alphorm.com Formation PostgreSQL, la Haute DisponibilitéAlphorm.com Formation PostgreSQL, la Haute Disponibilité
Alphorm.com Formation PostgreSQL, la Haute Disponibilité
 
Presentation Tomcat Load Balancer
Presentation Tomcat Load BalancerPresentation Tomcat Load Balancer
Presentation Tomcat Load Balancer
 
Run java vs ruby
Run java vs rubyRun java vs ruby
Run java vs ruby
 
eZ publish - Publication instantanée et fort trafic web
eZ publish - Publication instantanée et fort trafic webeZ publish - Publication instantanée et fort trafic web
eZ publish - Publication instantanée et fort trafic web
 

Similaire à Etes vous-prets-pour-le-succes-2011

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
 
Cours 1/3 "Architecture Web"
Cours 1/3 "Architecture Web"Cours 1/3 "Architecture Web"
Cours 1/3 "Architecture Web"Adyax
 
Cours 2/3 - Architecture Web
Cours 2/3 - Architecture WebCours 2/3 - Architecture Web
Cours 2/3 - Architecture WebAdyax
 
Retours Devoxx France 2016
Retours Devoxx France 2016Retours Devoxx France 2016
Retours Devoxx France 2016Antoine Rey
 
Programmation réactive avec Spring 5 et Reactor
Programmation réactive avec Spring 5 et ReactorProgrammation réactive avec Spring 5 et Reactor
Programmation réactive avec Spring 5 et ReactorFlorian Beaufumé
 
HTML5... La révolution maintenant!
HTML5... La révolution maintenant!HTML5... La révolution maintenant!
HTML5... La révolution maintenant!CARA_Lyon
 
HTML5... La révolution maintenant!
HTML5... La révolution maintenant!HTML5... La révolution maintenant!
HTML5... La révolution maintenant!CARA_Lyon
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinLudovic Piot
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide
 
Cours php & Mysql - 1ére partie
Cours php & Mysql - 1ére partieCours php & Mysql - 1ére partie
Cours php & Mysql - 1ére partiekadzaki
 
Drupal 8, symfony
Drupal 8, symfonyDrupal 8, symfony
Drupal 8, symfonyjeUXdiCode
 
Perfug Guide de survie du développeur dans une application Java qui rame
Perfug Guide de survie du développeur dans une application Java qui ramePerfug Guide de survie du développeur dans une application Java qui rame
Perfug Guide de survie du développeur dans une application Java qui ramebleporini
 
2013 01-08-php-maturite
2013 01-08-php-maturite2013 01-08-php-maturite
2013 01-08-php-maturiteRémi Alvado
 
Alphorm.com Formation Microsoft Hyperconvergence
Alphorm.com Formation Microsoft HyperconvergenceAlphorm.com Formation Microsoft Hyperconvergence
Alphorm.com Formation Microsoft HyperconvergenceAlphorm
 
Développer sereinement avec Node.js
Développer sereinement avec Node.jsDévelopper sereinement avec Node.js
Développer sereinement avec Node.jsJulien Giovaresco
 
Presentation
PresentationPresentation
Presentationbois
 
Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Antoine Rey
 

Similaire à Etes vous-prets-pour-le-succes-2011 (20)

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 ?
 
Formation Google App Engine
Formation Google App EngineFormation Google App Engine
Formation Google App Engine
 
Cours 1/3 "Architecture Web"
Cours 1/3 "Architecture Web"Cours 1/3 "Architecture Web"
Cours 1/3 "Architecture Web"
 
Cours 2/3 - Architecture Web
Cours 2/3 - Architecture WebCours 2/3 - Architecture Web
Cours 2/3 - Architecture Web
 
Retours Devoxx France 2016
Retours Devoxx France 2016Retours Devoxx France 2016
Retours Devoxx France 2016
 
Programmation réactive avec Spring 5 et Reactor
Programmation réactive avec Spring 5 et ReactorProgrammation réactive avec Spring 5 et Reactor
Programmation réactive avec Spring 5 et Reactor
 
Meet-Up SQLI Lyon 09-2015 - Varnish
Meet-Up SQLI Lyon 09-2015 - VarnishMeet-Up SQLI Lyon 09-2015 - Varnish
Meet-Up SQLI Lyon 09-2015 - Varnish
 
HTML5... La révolution maintenant!
HTML5... La révolution maintenant!HTML5... La révolution maintenant!
HTML5... La révolution maintenant!
 
HTML5... La révolution maintenant!
HTML5... La révolution maintenant!HTML5... La révolution maintenant!
HTML5... La révolution maintenant!
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
 
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassinOxalide Workshop #4 - Docker, des tours dans le petit bassin
Oxalide Workshop #4 - Docker, des tours dans le petit bassin
 
Paris RailsCamp 2009
Paris RailsCamp 2009Paris RailsCamp 2009
Paris RailsCamp 2009
 
Cours php & Mysql - 1ére partie
Cours php & Mysql - 1ére partieCours php & Mysql - 1ére partie
Cours php & Mysql - 1ére partie
 
Drupal 8, symfony
Drupal 8, symfonyDrupal 8, symfony
Drupal 8, symfony
 
Perfug Guide de survie du développeur dans une application Java qui rame
Perfug Guide de survie du développeur dans une application Java qui ramePerfug Guide de survie du développeur dans une application Java qui rame
Perfug Guide de survie du développeur dans une application Java qui rame
 
2013 01-08-php-maturite
2013 01-08-php-maturite2013 01-08-php-maturite
2013 01-08-php-maturite
 
Alphorm.com Formation Microsoft Hyperconvergence
Alphorm.com Formation Microsoft HyperconvergenceAlphorm.com Formation Microsoft Hyperconvergence
Alphorm.com Formation Microsoft Hyperconvergence
 
Développer sereinement avec Node.js
Développer sereinement avec Node.jsDévelopper sereinement avec Node.js
Développer sereinement avec Node.js
 
Presentation
PresentationPresentation
Presentation
 
Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?
 

Etes vous-prets-pour-le-succes-2011

  • 1. êtes-vous prêts pour le succès ?
  • 2. Huh !? Qui ça ? Steven VAN POECK stevenvanpoeck autodidacte, 12 ans de PHP, entre http://joind.in/4352 autres
  • 3. should i stay or should i go* ? * the clash, 1981
  • 5. quelques utilisateurs Apache 2.2.16 + mod PHP 5.3.3 + MySQL 5.1.49 Performance : Disponibilité : Coût :
  • 6. # requests Resp time 250 10 200 8 150 6 Resp Time (secs) OKAY Failed 100 4 50 2 0 0 5 10 25 # Concurrent requests Max connexions simultanées : 9 ~4 500 utilisateurs
  • 7. un peu plus d'utilisateurs Apache 2.2.16 + mod PHP 5.3.3 + MySQL 5.1.49 Performance : Disponibilité : Coût :
  • 8. un peu plus d'utilisateurs Apache 2.2.16 + mod PHP 5.3.3 + MySQL 5.1.49 Performance : Disponibilité : Coût :
  • 9. solutions ● utilisez les dernières versions stables des briques logicielles ● distribution de charges : séparation serveur web / db ● côté disponibilité : FastCGI pour PHP ● côté ressources : nginx ● tuning serveur Web (Nginx) – worker_processes → 1 par CPU mais plus de 4 est inutile – worker_connections → 2048 – keepalive_timeout → entre 10 et 20 – access_logs off → réduction I/O (utilisez Google Analytics pour stats) – error_log <LOGFILE> error|crit → réduction I/O (désactivez avec error_log /dev/null crit)
  • 10. solutions (suite) ● tuning PHP – cache op-code PHP (APC, eAccelerator, Zend Server) – utilisez la dernière version majeure stable ! – template caching (ex : Smarty) – compilation « maison » sans extensions inutilisées – always_populate_raw_post_data = Off (utilisez php://input) – max_execution_time → le plus petit possible – memory_limit → adapté à vos scripts – realpath_cache_size → plus si beaucoup de fichiers – realpath_cache_ttl → le plus élevé possible – enlever Suhosin patch
  • 11. un peu plus d'utilisateurs MySQL Nginx 1.0.8 + 5.5.16 FastCGI PHP 5.3.8 Performance : Disponibilité : Coût :
  • 12. # requests Resp time 1200 12 1000 10 800 8 Resp Time (secs) 600 6 OKAY Failed 400 4 200 2 0 0 5 10 25 50 75 100 125 150 175 200 # Concurrent requests Max connexions simultanées : 27 ~13 000 utilisateurs
  • 13. encore plus d'utilisateurs MySQL Nginx 1.0.8 + 5.5.16 FastCGI PHP 5.3.8 Performance : Disponibilité : Coût :
  • 15. solutions ● ajout de RAM sur le serveur MySQL ● tuning MySQL – utilisez InnoDB (rowlock) – connection_timeout → le plus bas possible – skip_name_resolve = 1 → réduction appels réseau – log = /dev/null → réduction I/O – slow_query_log = 1 → surveillance ● cache résultats brutes des requêtes – solution ad-hoc dans le code – extension AdoDb + memcache ● optimisation du code – exit(ORM); – traque et élimination des requêtes dans des boucles
  • 16. exemple solution ad-hoc dans le code : public function query($sql) { static $qCache = array(); // Stockage $qSig = md5($sql); // Cle unique pour la requete // On retourne le resultat directement if (array_key_exists($qSig, $qCache)) { return $qCache[$qSig]; } $rs = $this->db->query($sql); // Requete en base $qCache[$qSig] = $rs; // Mise en cache return $rs; // On retourne le resultat }
  • 17. encore plus d'utilisateurs memcache Performance : Disponibilité : Coût :
  • 18. # requests Resp time 1200 12 1000 10 800 8 Resp Time (secs) 600 6 OKAY Failed 400 4 200 2 0 0 5 10 25 50 75 100 125 150 175 200 # Concurrent requests Max connexions simultanées : 45 ~22 000 utilisateurs
  • 21. solutions ● ajout de serveurs frontaux ● load balancer ● sharding pour la base de données ● failover pour les MySQL
  • 22. toujours plus d'utilisateurs sharding Load 1 1 Balancer 2 2 3 3 failover Performance : Disponibilité : Coût :
  • 23. # requests Resp time 3000 12 2500 10 2000 8 Resp Time 1500 6 OKAY Failed 1000 4 500 2 0 0 5 10 25 50 75 100 125 150 175 200 225 # Concurrent requests Max connexions simultanées : 110 ~50 000 utilisateurs
  • 24. le succès est au rendez-vous ! 1 1 2 2 3 3 Performance : Disponibilité : Coût :
  • 25. le succès est au rendez-vous ! 1 1 2 2 3 3 Performance : Disponibilité : Coût :
  • 26. solutions ● perfomances & disponibilité – HTTP caching (Varnish, Squid, Nginx…) – content distribution network (CDN)
  • 27. le succès est au rendez-vous ! HTTP cache 1 1 2 2 3 3 CDN Performance : Disponibilité : Coût :
  • 28. # requests Resp time 6000 24 5000 20 4000 16 Resp Time 3000 12 OKAY Failed 2000 8 1000 4 0 0 5 10 25 50 75 100 125 150 175 200 225 250 275 300 325 350 375 # Concurrent requests Max connexions simultanées : 175 ~85 000 utilisateurs
  • 30. noSQL ● MongoDb : http://www.mongodb.org/ ● CouchDb : http://couchdb.apache.org/ ● CouchBase : http://www.couchbase.org/ ● ... ● ze nuage (Amazon, Azure, Eucalyptus, Google apps...)
  • 32. Références: ● Dernières versions briques logicielles – Debian : http://dotdeb.org – PHP : http://www.php.net ● Tuning PHP / Nginx : – http://blog.martinfjordvald.com/2011/04/optimizing-nginx-for-high-traffic-loads/ – http://php.net/manual/en/ini.core.php – http://talks.php.net/show/perf_tunning – http://phplens.com/lens/adodb/docs-adodb.htm#memcache ● Load balancing : http://en.wikipedia.org/wiki/Load_balancing_(computing) ● Optimisation MySQL : http://www.slideshare.net/ligaya/dpc-tutorial ● Sharding : http://en.wikipedia.org/wiki/Shard_(database_architecture) ● Failover : http://en.wikipedia.org/wiki/Failover ● Memcached : http://memcached.org/ ● CDN : http://en.wikipedia.org/wiki/Content_delivery_network ● HTTP cache : – http://en.wikipedia.org/wiki/HTTP_accelerator – https://www.varnish-cache.org/ – http://nginx.net/ – http://www.squid-cache.org/