Publicidad
Publicidad

Más contenido relacionado

Publicidad

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
  2. Tomáš Srnka
  3. myhappycat.com
  4. Klasický webhosting 3 EUR / mesačne 1000 pageviews / denne Netreba žiadne extra znalosti Takmer nulové prispôsobenie prostredia
  5. 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
  6. 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
  7. Dedikovaný server 8x 16 cores Intel XEON 1024GB of RAM 24x Intel SSD 2x 10GE
  8. Server Údržba servera Backups Monitoring Security audit Performance optimalizácie SPOF ….
  9. Software Operačný systém
  10. Klasické distro
  11. • Zlý časovač pre CPU čas • Veľmi zlý časovač pre IO • Filesystémy z ’90 rokov* • Network stack problematický (?) * BTRFS je nepoužiteľné
  12. 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
  13. 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
  14. …späť k PHP
  15. Čo spraví veľa ľudí…
  16. ! # apt-get install php5 apache2 libapache2-mod-php5 php5-mcrypt mysql-server ! # service mysqld start # service apache2 start !
  17. …a kde končia
  18. Ako na to • Vymeniť mod_php za php-fpm • Ak je to možné, vymeniť Apache za nginX • upraviť my.cnf pre databázu
  19. 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; }
  20. 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.
  21. 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
  22. 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
  23. Zmenou PHP VM resp. verzie bez zmeny riadku PHP kódu 25 req/s 7,12x 178 req/s
  24. 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
  25. Ja mam naozaj veľkú navštevnosť
  26. Rozdeliť služby na viac serverov Browser nginX PHP-FPM MariaDB
  27. Nechcem SPOF...
  28. Clustering
  29. Prečo? • Vyšší výkon (neobmedzený?) • Vyššia dostupnosť
  30. Browser balancer MariaDB balancer webserver webserver … webserver DB balancer DB balancer MariaDB … MariaDB
  31. 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
  32. 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"
  33. webserver
  34. Browser balancer MariaDB balancer webserver webserver … webserver DB balancer DB balancer MariaDB … MariaDB
  35. 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
  36. MariaDB • Nepárny počet serverov • min. 50% online • Sync. Galera Replikácia, len InnoDB • Automatické rozkladanie záťaže a dát
  37. Na niečo sme zabudli
  38. Browser balancer MariaDB balancer webserver webserver … webserver DB balancer DB balancer MariaDB … MariaDB
  39. 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
  40. Aký max výkon môžem mať?
  41. … alebo to mám za 2 kliky
  42. Ďakujem za pozornosť ! Otázky? @tomassrnka
Publicidad