SlideShare una empresa de Scribd logo
1 de 49
Descargar para leer sin conexión
Ako škálovať PHP 
stránky? Od malej stránky 
až po datacentrum 
Tomáš Srnka 
@tomassrnka
Tomáš Srnka
myhappycat.com
Klasický webhosting 
3 EUR / mesačne 
1000 pageviews / denne 
Netreba žiadne extra znalosti 
Takmer nulové prispôsobenie prostredia
Virtual Server 
5 - 100 EUR / mesačne 
1000 - 20k pageviews / denne 
Vyhradené(?) CPU,RAM,IO 
Základné znalosti sysadmina! 
Prispôsobiteľné pre vlastné potreby 
Vyššia cena 
Vlastná cena
Dedikovaný server 
100-2000 EUR / mesačne 
20-200k pageviews / denne 
Dedikované CPU,RAM,IO 
Vyžaduje o niečo lepšie znalosti ako pri virt. serveri! 
Dedikovaný výkon 
Hardvér je prispôsobiteľný presne na mieru 
Vysoká cena 
Vlastná zodpovesnosť aj za HW
Dedikovaný server 
8x 16 cores Intel XEON 
1024GB of RAM 
24x Intel SSD 
2x 10GE
Server 
Údržba servera 
Backups 
Monitoring 
Security audit 
Performance optimalizácie 
SPOF 
….
Software 
Operačný systém
Klasické distro
• Zlý časovač pre CPU čas 
• Veľmi zlý časovač pre IO 
• Filesystémy z ’90 rokov* 
• Network stack problematický (?) 
* BTRFS je nepoužiteľné
Solaris a FreeBSD 
• Veľmi málo rozšírené 
• Slabý userspace a testovanie 
• Skoro nik nepoužíva pre PHP 
• Avšak majú ZFS, lepšie 
časovače a aj network stack
Na začiatok… 
• Každá služba (a jej jednotka) má svoj kontajner 
• Lepší scheduler 
• Lepší IO scheduler pre SSD 
• ZFS pre… všetko okrem host OS
…späť k PHP
Čo spraví veľa ľudí…
! 
# apt-get install php5 apache2  
libapache2-mod-php5 php5-mcrypt  
mysql-server 
! 
# service mysqld start 
# service apache2 start 
!
…a kde končia
Ako na to 
• Vymeniť mod_php za php-fpm 
• Ak je to možné, vymeniť Apache za 
nginX 
• upraviť my.cnf pre databázu
nginx 
worker_processes 12; # number of cores / 2 
! 
error_log /var/log/nginx/error.log; 
pid /var/run/nginx.pid; 
! 
worker_rlimit_nofile 300000; 
! 
events { 
worker_connections 10240; 
multi_accept on; 
} 
! 
http { 
sendfile on; 
tcp_nodelay on; 
gzip on; 
}
PHP-FPM 
• Sessions presunúť do memcached 
• Nastaviť PHP-FPM na static, 2x počet jadier 
• Lifetime procesu cca 1000 requests 
• Zrušiť APC a nahradiť OPCache 
• Zrušiť zápisy na disk z PHP aplikácie 
• Disk nie je cache. Naozaj.
Fannkuch 
• Hrubá vypočetná sila, generovanie permutacií 
Sekundy 
4000 
3000 
2000 
1000 
0 
PHP 5.3 
PHP 5.4 
PHP 5.5 
PHP 5.6-dev 
HHVM 
HippyVM 
Menej je lepšie
Requests per second 
Wordpress - benchmark 
180 
135 
90 
45 
0 
PHP 5.3 
PHP 5.3-APC 
PHP 5.4 
PHP 5.5-OpCache 
PHP 5.6-OpCache 
HHVM 
Viac je lepšie
Zmenou PHP VM resp. verzie 
bez zmeny riadku PHP kódu 
25 req/s 7,12x 178 req/s
MySQL 
• Defaultné hodnoty po čase prestanú stačiť 
• Zakladné 2 hodnoty kam sa pozrieť: 
• MyISAM: key_buffer_size 
• InnoDB: innodb_buffer_pool_size 
• slow log
Ja mam naozaj veľkú 
navštevnosť
Rozdeliť služby na viac 
serverov 
Browser nginX PHP-FPM MariaDB
Nechcem SPOF...
Clustering
Prečo? 
• Vyšší výkon (neobmedzený?) 
• Vyššia dostupnosť
Browser 
balancer 
MariaDB 
balancer 
webserver webserver … webserver 
DB balancer DB balancer 
MariaDB … MariaDB
upstream cluster { 
ip_hash; 
server srv1.example.com; 
server srv2.example.com; 
server srv3.example.com; 
} 
! 
server { 
server_name example.com; 
! 
location / { 
proxy_pass http://cluster; 
} 
} 
balancer
balancer 
webserver 
/etc/php.d/php.ini: 
session.save_handler=memcache 
session.save_path="tcp://BALANCER1:11211? 
persistent=1&weight=1&timeout=1&retry_interval=15"
webserver
Browser 
balancer 
MariaDB 
balancer 
webserver webserver … webserver 
DB balancer DB balancer 
MariaDB … MariaDB
DB balancer 
listen mariadb-cluster 
bind 0.0.0.0:3306 
mode tcp 
balance roundrobin 
server mariadb-1 mariadb-1:3306 check 
server mariadb-2 mariadb-2:3306 check
MariaDB 
• Nepárny počet serverov 
• min. 50% online 
• Sync. Galera Replikácia, len InnoDB 
• Automatické rozkladanie záťaže a dát
Na niečo sme zabudli
Browser 
balancer 
MariaDB 
balancer 
webserver webserver … webserver 
DB balancer DB balancer 
MariaDB … MariaDB
Web a jeho dáta 
• centrálne úložisko (SAN alebo NAS) 
• znovu SPOF, zväčša pomalé 
• distribuované zdieľané úložisko 
• veľmi tažko realizovateľné alebo pomalé 
• read only dáta (netreba zdielať) 
• treba upravovať aplikáciu
Aký max výkon môžem 
mať?
… alebo to mám za 2 kliky
Ďakujem za pozornosť 
! 
Otázky? 
@tomassrnka

Más contenido relacionado

Similar a Codecon.sk - Ako škálovať PHP stránky? Od malej stránky až po datacentrum

OSS Vikend 2016: vpsFree.cz - linuxový server od neziskovky
OSS Vikend 2016: vpsFree.cz - linuxový server od neziskovkyOSS Vikend 2016: vpsFree.cz - linuxový server od neziskovky
OSS Vikend 2016: vpsFree.cz - linuxový server od neziskovkyTomas Srnka
 
Node.js @ Rubyslava
Node.js @ RubyslavaNode.js @ Rubyslava
Node.js @ RubyslavaIvan Srba
 
Require.JS & Backbone.JS
Require.JS & Backbone.JSRequire.JS & Backbone.JS
Require.JS & Backbone.JSsrigi
 
Wordcamp 2015, Juraj Hanták - Ako zvládnúť rast webu
Wordcamp 2015, Juraj Hanták - Ako zvládnúť rast webuWordcamp 2015, Juraj Hanták - Ako zvládnúť rast webu
Wordcamp 2015, Juraj Hanták - Ako zvládnúť rast webuWebglobe - Yegon
 
Junior Internet 2015 - PHP moderne a správne
Junior Internet 2015 - PHP moderne a správneJunior Internet 2015 - PHP moderne a správne
Junior Internet 2015 - PHP moderne a správneTomáš Tatarko
 
DataCore Software - The one and only Storage Hypervisor
DataCore Software - The one and only Storage HypervisorDataCore Software - The one and only Storage Hypervisor
DataCore Software - The one and only Storage HypervisorASBIS SK
 
The New Distrowatch – Bachelor's thesis (SK)
The New Distrowatch – Bachelor's thesis (SK)The New Distrowatch – Bachelor's thesis (SK)
The New Distrowatch – Bachelor's thesis (SK)Jakub Žitný
 
macroscop prezentacia WIDE security s.r.o
macroscop prezentacia WIDE security s.r.omacroscop prezentacia WIDE security s.r.o
macroscop prezentacia WIDE security s.r.oWIDE security s.r.o.
 
Zváračský kurz na BlazeDS a Google App Engine
Zváračský kurz na BlazeDS a Google App EngineZváračský kurz na BlazeDS a Google App Engine
Zváračský kurz na BlazeDS a Google App EngineJuraj Michálek
 
Oracle Business Intelligence Forum
Oracle Business Intelligence ForumOracle Business Intelligence Forum
Oracle Business Intelligence ForumOracleSK
 
Novinky oracle pre oblast datovych skladov
Novinky oracle pre oblast datovych skladovNovinky oracle pre oblast datovych skladov
Novinky oracle pre oblast datovych skladovOracleSK
 
Ako na rýchly web - WordCamp Žilina 2016 - xKatka
Ako na rýchly web - WordCamp Žilina 2016 - xKatkaAko na rýchly web - WordCamp Žilina 2016 - xKatka
Ako na rýchly web - WordCamp Žilina 2016 - xKatkaKatarina Novotna
 
Návrh a realizácia web stránky skriptovacím jazykom PHP vrátane administračné...
Návrh a realizácia web stránky skriptovacím jazykom PHP vrátane administračné...Návrh a realizácia web stránky skriptovacím jazykom PHP vrátane administračné...
Návrh a realizácia web stránky skriptovacím jazykom PHP vrátane administračné...Catana0605
 
WebJET Cloud pre hosting partnerov
WebJET Cloud pre hosting partnerovWebJET Cloud pre hosting partnerov
WebJET Cloud pre hosting partnerovlubosbalat
 
ONLINE KLUB - Juraj Grešš, WEBGLOBE - Domény a webhosting
ONLINE KLUB - Juraj Grešš, WEBGLOBE - Domény a webhostingONLINE KLUB - Juraj Grešš, WEBGLOBE - Domény a webhosting
ONLINE KLUB - Juraj Grešš, WEBGLOBE - Domény a webhostingKatarína Molnárová
 
Siemens IT Solutions: Môžeme s príchodom cloudu zabudnúť na tradičné disaster...
Siemens IT Solutions: Môžeme s príchodom cloudu zabudnúť na tradičné disaster...Siemens IT Solutions: Môžeme s príchodom cloudu zabudnúť na tradičné disaster...
Siemens IT Solutions: Môžeme s príchodom cloudu zabudnúť na tradičné disaster...ASBIS SK
 
J-Testy - Príručka obsluhy serveru (SK)
J-Testy - Príručka obsluhy serveru (SK)J-Testy - Príručka obsluhy serveru (SK)
J-Testy - Príručka obsluhy serveru (SK)Jaroslav Kačer
 

Similar a Codecon.sk - Ako škálovať PHP stránky? Od malej stránky až po datacentrum (20)

OSS Vikend 2016: vpsFree.cz - linuxový server od neziskovky
OSS Vikend 2016: vpsFree.cz - linuxový server od neziskovkyOSS Vikend 2016: vpsFree.cz - linuxový server od neziskovky
OSS Vikend 2016: vpsFree.cz - linuxový server od neziskovky
 
Node.js @ Rubyslava
Node.js @ RubyslavaNode.js @ Rubyslava
Node.js @ Rubyslava
 
Require.JS & Backbone.JS
Require.JS & Backbone.JSRequire.JS & Backbone.JS
Require.JS & Backbone.JS
 
Wordcamp 2015, Juraj Hanták - Ako zvládnúť rast webu
Wordcamp 2015, Juraj Hanták - Ako zvládnúť rast webuWordcamp 2015, Juraj Hanták - Ako zvládnúť rast webu
Wordcamp 2015, Juraj Hanták - Ako zvládnúť rast webu
 
Junior Internet 2015 - PHP moderne a správne
Junior Internet 2015 - PHP moderne a správneJunior Internet 2015 - PHP moderne a správne
Junior Internet 2015 - PHP moderne a správne
 
DataCore Software - The one and only Storage Hypervisor
DataCore Software - The one and only Storage HypervisorDataCore Software - The one and only Storage Hypervisor
DataCore Software - The one and only Storage Hypervisor
 
The New Distrowatch – Bachelor's thesis (SK)
The New Distrowatch – Bachelor's thesis (SK)The New Distrowatch – Bachelor's thesis (SK)
The New Distrowatch – Bachelor's thesis (SK)
 
Php sec
Php secPhp sec
Php sec
 
Analytika
AnalytikaAnalytika
Analytika
 
macroscop prezentacia WIDE security s.r.o
macroscop prezentacia WIDE security s.r.omacroscop prezentacia WIDE security s.r.o
macroscop prezentacia WIDE security s.r.o
 
Telnet and SSH
Telnet and SSHTelnet and SSH
Telnet and SSH
 
Zváračský kurz na BlazeDS a Google App Engine
Zváračský kurz na BlazeDS a Google App EngineZváračský kurz na BlazeDS a Google App Engine
Zváračský kurz na BlazeDS a Google App Engine
 
Oracle Business Intelligence Forum
Oracle Business Intelligence ForumOracle Business Intelligence Forum
Oracle Business Intelligence Forum
 
Novinky oracle pre oblast datovych skladov
Novinky oracle pre oblast datovych skladovNovinky oracle pre oblast datovych skladov
Novinky oracle pre oblast datovych skladov
 
Ako na rýchly web - WordCamp Žilina 2016 - xKatka
Ako na rýchly web - WordCamp Žilina 2016 - xKatkaAko na rýchly web - WordCamp Žilina 2016 - xKatka
Ako na rýchly web - WordCamp Žilina 2016 - xKatka
 
Návrh a realizácia web stránky skriptovacím jazykom PHP vrátane administračné...
Návrh a realizácia web stránky skriptovacím jazykom PHP vrátane administračné...Návrh a realizácia web stránky skriptovacím jazykom PHP vrátane administračné...
Návrh a realizácia web stránky skriptovacím jazykom PHP vrátane administračné...
 
WebJET Cloud pre hosting partnerov
WebJET Cloud pre hosting partnerovWebJET Cloud pre hosting partnerov
WebJET Cloud pre hosting partnerov
 
ONLINE KLUB - Juraj Grešš, WEBGLOBE - Domény a webhosting
ONLINE KLUB - Juraj Grešš, WEBGLOBE - Domény a webhostingONLINE KLUB - Juraj Grešš, WEBGLOBE - Domény a webhosting
ONLINE KLUB - Juraj Grešš, WEBGLOBE - Domény a webhosting
 
Siemens IT Solutions: Môžeme s príchodom cloudu zabudnúť na tradičné disaster...
Siemens IT Solutions: Môžeme s príchodom cloudu zabudnúť na tradičné disaster...Siemens IT Solutions: Môžeme s príchodom cloudu zabudnúť na tradičné disaster...
Siemens IT Solutions: Môžeme s príchodom cloudu zabudnúť na tradičné disaster...
 
J-Testy - Príručka obsluhy serveru (SK)
J-Testy - Príručka obsluhy serveru (SK)J-Testy - Príručka obsluhy serveru (SK)
J-Testy - Príručka obsluhy serveru (SK)
 

Codecon.sk - Ako škálovať PHP stránky? Od malej stránky až po datacentrum

  • 1. Ako škálovať PHP stránky? Od malej stránky až po datacentrum Tomáš Srnka @tomassrnka
  • 3.
  • 5. Klasický webhosting 3 EUR / mesačne 1000 pageviews / denne Netreba žiadne extra znalosti Takmer nulové prispôsobenie prostredia
  • 6. Virtual Server 5 - 100 EUR / mesačne 1000 - 20k pageviews / denne Vyhradené(?) CPU,RAM,IO Základné znalosti sysadmina! Prispôsobiteľné pre vlastné potreby Vyššia cena Vlastná cena
  • 7. Dedikovaný server 100-2000 EUR / mesačne 20-200k pageviews / denne Dedikované CPU,RAM,IO Vyžaduje o niečo lepšie znalosti ako pri virt. serveri! Dedikovaný výkon Hardvér je prispôsobiteľný presne na mieru Vysoká cena Vlastná zodpovesnosť aj za HW
  • 8. Dedikovaný server 8x 16 cores Intel XEON 1024GB of RAM 24x Intel SSD 2x 10GE
  • 9. Server Údržba servera Backups Monitoring Security audit Performance optimalizácie SPOF ….
  • 11.
  • 13. • Zlý časovač pre CPU čas • Veľmi zlý časovač pre IO • Filesystémy z ’90 rokov* • Network stack problematický (?) * BTRFS je nepoužiteľné
  • 14. Solaris a FreeBSD • Veľmi málo rozšírené • Slabý userspace a testovanie • Skoro nik nepoužíva pre PHP • Avšak majú ZFS, lepšie časovače a aj network stack
  • 15.
  • 16.
  • 17.
  • 18. Na začiatok… • Každá služba (a jej jednotka) má svoj kontajner • Lepší scheduler • Lepší IO scheduler pre SSD • ZFS pre… všetko okrem host OS
  • 20. Čo spraví veľa ľudí…
  • 21. ! # apt-get install php5 apache2 libapache2-mod-php5 php5-mcrypt mysql-server ! # service mysqld start # service apache2 start !
  • 23. Ako na to • Vymeniť mod_php za php-fpm • Ak je to možné, vymeniť Apache za nginX • upraviť my.cnf pre databázu
  • 24. nginx worker_processes 12; # number of cores / 2 ! error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; ! worker_rlimit_nofile 300000; ! events { worker_connections 10240; multi_accept on; } ! http { sendfile on; tcp_nodelay on; gzip on; }
  • 25. PHP-FPM • Sessions presunúť do memcached • Nastaviť PHP-FPM na static, 2x počet jadier • Lifetime procesu cca 1000 requests • Zrušiť APC a nahradiť OPCache • Zrušiť zápisy na disk z PHP aplikácie • Disk nie je cache. Naozaj.
  • 26. Fannkuch • Hrubá vypočetná sila, generovanie permutacií Sekundy 4000 3000 2000 1000 0 PHP 5.3 PHP 5.4 PHP 5.5 PHP 5.6-dev HHVM HippyVM Menej je lepšie
  • 27. Requests per second Wordpress - benchmark 180 135 90 45 0 PHP 5.3 PHP 5.3-APC PHP 5.4 PHP 5.5-OpCache PHP 5.6-OpCache HHVM Viac je lepšie
  • 28. Zmenou PHP VM resp. verzie bez zmeny riadku PHP kódu 25 req/s 7,12x 178 req/s
  • 29. MySQL • Defaultné hodnoty po čase prestanú stačiť • Zakladné 2 hodnoty kam sa pozrieť: • MyISAM: key_buffer_size • InnoDB: innodb_buffer_pool_size • slow log
  • 30. Ja mam naozaj veľkú navštevnosť
  • 31. Rozdeliť služby na viac serverov Browser nginX PHP-FPM MariaDB
  • 34. Prečo? • Vyšší výkon (neobmedzený?) • Vyššia dostupnosť
  • 35. Browser balancer MariaDB balancer webserver webserver … webserver DB balancer DB balancer MariaDB … MariaDB
  • 36. upstream cluster { ip_hash; server srv1.example.com; server srv2.example.com; server srv3.example.com; } ! server { server_name example.com; ! location / { proxy_pass http://cluster; } } balancer
  • 37. balancer webserver /etc/php.d/php.ini: session.save_handler=memcache session.save_path="tcp://BALANCER1:11211? persistent=1&weight=1&timeout=1&retry_interval=15"
  • 39. Browser balancer MariaDB balancer webserver webserver … webserver DB balancer DB balancer MariaDB … MariaDB
  • 40. DB balancer listen mariadb-cluster bind 0.0.0.0:3306 mode tcp balance roundrobin server mariadb-1 mariadb-1:3306 check server mariadb-2 mariadb-2:3306 check
  • 41. MariaDB • Nepárny počet serverov • min. 50% online • Sync. Galera Replikácia, len InnoDB • Automatické rozkladanie záťaže a dát
  • 42. Na niečo sme zabudli
  • 43. Browser balancer MariaDB balancer webserver webserver … webserver DB balancer DB balancer MariaDB … MariaDB
  • 44. Web a jeho dáta • centrálne úložisko (SAN alebo NAS) • znovu SPOF, zväčša pomalé • distribuované zdieľané úložisko • veľmi tažko realizovateľné alebo pomalé • read only dáta (netreba zdielať) • treba upravovať aplikáciu
  • 45. Aký max výkon môžem mať?
  • 46.
  • 47.
  • 48. … alebo to mám za 2 kliky
  • 49. Ďakujem za pozornosť ! Otázky? @tomassrnka