Nouveau classement hôtelier, sécurité incendie, accessibilité : Etes-vous prêts ?
Etes vous prêts pour le succes ?
-
Upload
steven-van-poeck -
Category
Technology
-
view
1.107 -
download
2
Transcript of Etes vous prêts pour le succes ?
![Page 1: Etes vous prêts pour le succes ?](https://reader034.fdocument.pub/reader034/viewer/2022052623/559b3a0b1a28abf73e8b4790/html5/thumbnails/1.jpg)
êtes-vous prêts pour le succès ?
![Page 2: Etes vous prêts pour le succes ?](https://reader034.fdocument.pub/reader034/viewer/2022052623/559b3a0b1a28abf73e8b4790/html5/thumbnails/2.jpg)
Huh !? Qui ça ?
Steven VAN POECK
autodidacte, 12 ans de PHP, entre autres
s t e v e n v a n p o e c k
h t t p : //jo in d . in /4 3 5 2
![Page 3: Etes vous prêts pour le succes ?](https://reader034.fdocument.pub/reader034/viewer/2022052623/559b3a0b1a28abf73e8b4790/html5/thumbnails/3.jpg)
should i stay or should i go* ?
* the clash, 1981
![Page 4: Etes vous prêts pour le succes ?](https://reader034.fdocument.pub/reader034/viewer/2022052623/559b3a0b1a28abf73e8b4790/html5/thumbnails/4.jpg)
le début
![Page 5: Etes vous prêts pour le succes ?](https://reader034.fdocument.pub/reader034/viewer/2022052623/559b3a0b1a28abf73e8b4790/html5/thumbnails/5.jpg)
quelques utilisateurs
Coût :
Apache 2.2.16 + mod PHP 5.3.3 +
MySQL 5.1.49
Performance :Disponibilité :
![Page 6: Etes vous prêts pour le succes ?](https://reader034.fdocument.pub/reader034/viewer/2022052623/559b3a0b1a28abf73e8b4790/html5/thumbnails/6.jpg)
0
50
100
150
200
250
0
2
4
6
8
10
Resp Time (secs) OKAY Failed
Resp time# requests
# Concurrent requests
Max connexions simultanées : 9 ~4 500 utilisateurs
![Page 7: Etes vous prêts pour le succes ?](https://reader034.fdocument.pub/reader034/viewer/2022052623/559b3a0b1a28abf73e8b4790/html5/thumbnails/7.jpg)
un peu plus d'utilisateurs
Coût :
Apache 2.2.16 + mod PHP 5.3.3 +
MySQL 5.1.49
Performance :Disponibilité :
![Page 8: Etes vous prêts pour le succes ?](https://reader034.fdocument.pub/reader034/viewer/2022052623/559b3a0b1a28abf73e8b4790/html5/thumbnails/8.jpg)
un peu plus d'utilisateurs
Apache 2.2.16 + mod PHP 5.3.3 +
MySQL 5.1.49
Coût :
Performance :Disponibilité :
![Page 9: Etes vous prêts pour le succes ?](https://reader034.fdocument.pub/reader034/viewer/2022052623/559b3a0b1a28abf73e8b4790/html5/thumbnails/9.jpg)
solutionsutilisez 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
![Page 10: Etes vous prêts pour le succes ?](https://reader034.fdocument.pub/reader034/viewer/2022052623/559b3a0b1a28abf73e8b4790/html5/thumbnails/10.jpg)
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
![Page 11: Etes vous prêts pour le succes ?](https://reader034.fdocument.pub/reader034/viewer/2022052623/559b3a0b1a28abf73e8b4790/html5/thumbnails/11.jpg)
un peu plus d'utilisateurs
MySQL 5.5.16
Nginx 1.0.8 + F a s t CGI PHP 5.3.8
Coût :
Performance :Disponibilité :
![Page 12: Etes vous prêts pour le succes ?](https://reader034.fdocument.pub/reader034/viewer/2022052623/559b3a0b1a28abf73e8b4790/html5/thumbnails/12.jpg)
0
200
400
600
800
1000
1200
0
2
4
6
8
10
12
Resp Time (secs) OKAY Failed
# requests Resp time
# Concurrent requests
Max connexions simultanées : 27 ~13 000 utilisateurs
![Page 13: Etes vous prêts pour le succes ?](https://reader034.fdocument.pub/reader034/viewer/2022052623/559b3a0b1a28abf73e8b4790/html5/thumbnails/13.jpg)
encore plus d'utilisateurs
MySQL 5.5.16
Nginx 1.0.8 + F a s t CGI PHP 5.3.8
Coût :
Performance :Disponibilité :
![Page 14: Etes vous prêts pour le succes ?](https://reader034.fdocument.pub/reader034/viewer/2022052623/559b3a0b1a28abf73e8b4790/html5/thumbnails/14.jpg)
encore plus d'utilisateurs
Coût :
Performance :Disponibilité :
![Page 15: Etes vous prêts pour le succes ?](https://reader034.fdocument.pub/reader034/viewer/2022052623/559b3a0b1a28abf73e8b4790/html5/thumbnails/15.jpg)
solutionsajout 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
![Page 16: Etes vous prêts pour le succes ?](https://reader034.fdocument.pub/reader034/viewer/2022052623/559b3a0b1a28abf73e8b4790/html5/thumbnails/16.jpg)
exemple solution ad-hoc dans le code :p u b l i c f u n c t i o n q u e r y( $s q l ) {
s t at i c $q Cac h e = ar r ay( ) ; // St o c k age
$q S i g = md 5( $s q l ) ; // Cl e u n i q u e p o u r l a
r e q u e t e
// On r e t o u r n e l e r e s u l t at d i r e c t e me n t
i f ( ar r ay_ k e y_ e x i s t s ( $q S i g , $q Cac h e ) ) {
r e t u r n $q Cac h e [ $q S i g] ;
}
$r s = $t h i s - > d b - > q u e r y( $s q l ) ; // Re q u e t e
e n b as e
$q Cac h e [ $q S i g] = $r s ; // Mi s e e n c ac h e
r e t u r n $r s ; // On r e t o u r n e l e r e s u l t at
}
![Page 17: Etes vous prêts pour le succes ?](https://reader034.fdocument.pub/reader034/viewer/2022052623/559b3a0b1a28abf73e8b4790/html5/thumbnails/17.jpg)
encore plus d'utilisateurs
memcache
Coût :
Performance :Disponibilité :
![Page 18: Etes vous prêts pour le succes ?](https://reader034.fdocument.pub/reader034/viewer/2022052623/559b3a0b1a28abf73e8b4790/html5/thumbnails/18.jpg)
0
200
400
600
800
1000
1200
0
2
4
6
8
10
12
Resp Time (secs) OKAY Failed
# requests Resp time
# Concurrent requests
Max connexions simultanées : 45 ~22 000 utilisateurs
![Page 19: Etes vous prêts pour le succes ?](https://reader034.fdocument.pub/reader034/viewer/2022052623/559b3a0b1a28abf73e8b4790/html5/thumbnails/19.jpg)
toujours plus d'utilisateurs
Coût :
Performance :Disponibilité :
![Page 20: Etes vous prêts pour le succes ?](https://reader034.fdocument.pub/reader034/viewer/2022052623/559b3a0b1a28abf73e8b4790/html5/thumbnails/20.jpg)
toujours plus d'utilisateurs
Coût :
Performance :Disponibilité :
![Page 21: Etes vous prêts pour le succes ?](https://reader034.fdocument.pub/reader034/viewer/2022052623/559b3a0b1a28abf73e8b4790/html5/thumbnails/21.jpg)
solutionsajout de serveurs frontaux
load balancer
sharding pour la base de données
failover pour les MySQL
![Page 22: Etes vous prêts pour le succes ?](https://reader034.fdocument.pub/reader034/viewer/2022052623/559b3a0b1a28abf73e8b4790/html5/thumbnails/22.jpg)
toujours plus d'utilisateurs
1
3
2
sharding
1
3
2
LoadBalancer
Coût :
Performance :Disponibilité :
failover
![Page 23: Etes vous prêts pour le succes ?](https://reader034.fdocument.pub/reader034/viewer/2022052623/559b3a0b1a28abf73e8b4790/html5/thumbnails/23.jpg)
5 10 25 50 75 100 125 150 175 200 2250
500
1000
1500
2000
2500
3000
0
2
4
6
8
10
12
Resp Time OKAY Failed
# requests Resp time
# Concurrent requests
Max connexions simultanées : 110 ~50 000 utilisateurs
![Page 24: Etes vous prêts pour le succes ?](https://reader034.fdocument.pub/reader034/viewer/2022052623/559b3a0b1a28abf73e8b4790/html5/thumbnails/24.jpg)
le succès est au rendez-vous !
1
3
2
1
3
2
Coût :
Performance :Disponibilité :
![Page 25: Etes vous prêts pour le succes ?](https://reader034.fdocument.pub/reader034/viewer/2022052623/559b3a0b1a28abf73e8b4790/html5/thumbnails/25.jpg)
le succès est au rendez-vous !
1
3
2
Coût :
Performance :Disponibilité :
1
3
2
![Page 26: Etes vous prêts pour le succes ?](https://reader034.fdocument.pub/reader034/viewer/2022052623/559b3a0b1a28abf73e8b4790/html5/thumbnails/26.jpg)
solutionsperfomances & disponibilité
HTTP caching (Varnish, Squid, Nginx…)
content distribution network (CDN)
![Page 27: Etes vous prêts pour le succes ?](https://reader034.fdocument.pub/reader034/viewer/2022052623/559b3a0b1a28abf73e8b4790/html5/thumbnails/27.jpg)
le succès est au rendez-vous !
CDN
HTTP cache1
3
2
1
3
2
Coût :
Performance :Disponibilité :
![Page 28: Etes vous prêts pour le succes ?](https://reader034.fdocument.pub/reader034/viewer/2022052623/559b3a0b1a28abf73e8b4790/html5/thumbnails/28.jpg)
5 10 25 50 75 100 125 150 175 200 225 250 275 300 325 350 3750
1000
2000
3000
4000
5000
6000
0
4
8
12
16
20
24
Resp Time OKAY Failed
# requests Resp time
# Concurrent requests
Max connexions simultanées : 175 ~85 000 utilisateurs
![Page 29: Etes vous prêts pour le succes ?](https://reader034.fdocument.pub/reader034/viewer/2022052623/559b3a0b1a28abf73e8b4790/html5/thumbnails/29.jpg)
mais encore ?
![Page 30: Etes vous prêts pour le succes ?](https://reader034.fdocument.pub/reader034/viewer/2022052623/559b3a0b1a28abf73e8b4790/html5/thumbnails/30.jpg)
noSQLMongoDb : http://www.mongodb.org/
CouchDb : http://couchdb.apache.org/
CouchBase : http://www.couchbase.org/
...
ze nuage (Amazon, Azure, Eucalyptus, Google apps...)
![Page 31: Etes vous prêts pour le succes ?](https://reader034.fdocument.pub/reader034/viewer/2022052623/559b3a0b1a28abf73e8b4790/html5/thumbnails/31.jpg)
questions ?
![Page 32: Etes vous prêts pour le succes ?](https://reader034.fdocument.pub/reader034/viewer/2022052623/559b3a0b1a28abf73e8b4790/html5/thumbnails/32.jpg)
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 :