Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

WP výkon a jeho profilování

735 views

Published on

Prezentace z WP weekend 28.5.2016 - měření výkonu pomocí Blackfire.io

Published in: Technology
  • Be the first to comment

  • Be the first to like this

WP výkon a jeho profilování

  1. 1. @smitka Lynt services s.r.o. Infrastruktura Webová řešení Marketing WP – výkon a jeho profilování Vláďa Smitka https://lynt.cz
  2. 2. Infrastruktura Webová řešení Marketing @smitka Lynt services s.r.o. Co dnes uslyšíte? • Kde a jak hledat výkonnostní problémy • Server vs zdroje • Pár slov o serverech a síťové infrastruktuře • Ladění DB • Ladění PHP skriptů pomocí Blackfire.io • Budeme používat testovací virtuálek ve VirtualBoxu
  3. 3. Infrastruktura Webová řešení Marketing @smitka Lynt services s.r.o. Virtuálek Na flashce: • Virtualbox • Appliance (Centos-WPweekend.ova) • Datové a konfigurační soubory • Užitečné odkazy • 1x předinstalovaný WP • Počítá s IP 192.168.33.10 • Lze využít doménu *.10.lynt.eu • = wp1.10.lynt.eu Apache 2.4 PHP 5.6 FPM 127.0.0.1:9056 PHP 7.0 FPM 127.0.0.1:9070 Port 80 Port 7080 MariaDB 5.5 MailCatcher Shell in a Box WP-CLI WPscan Datové soubory Konfigurace DB Logy Síť s hostemNAT
  4. 4. Infrastruktura Webová řešení Marketing @smitka Lynt services s.r.o. Nastavení VBoxu
  5. 5. Infrastruktura Webová řešení Marketing @smitka Lynt services s.r.o. První kontakt • https://gtmetrix.com/ • http://www.webpagetest.org/
  6. 6. Infrastruktura Webová řešení Marketing @smitka Lynt services s.r.o. Waterfall
  7. 7. Infrastruktura Webová řešení Marketing @smitka Lynt services s.r.o. Co na serveru trvá? • Databázové dotazy • HTTP požadavky na vzdálené služby • Špatně napsaný kód, který se mnohokrát zbytečně spouští • Maily • Práce s daty na přetíženém serveru
  8. 8. Infrastruktura Webová řešení Marketing @smitka Lynt services s.r.o. Hosting, VPS, vlastní server? 2x CPU, 4GB RAM 1x CPU, 2GB RAM 1x CPU, 2GB RAM define( 'WP_MEMORY_LIMIT', '512M' ); Pro admin: WP_MAX_MEMORY_LIMIT 1 zobrazení běžné stránky = 20-40MB
  9. 9. Infrastruktura Webová řešení Marketing @smitka Lynt services s.r.o. Jak si otestovat, kolik server snese? • https://loader.io/ • https://loadimpact.com/ • https://www.blazemeter.com/
  10. 10. Infrastruktura Webová řešení Marketing @smitka Lynt services s.r.o. Databázové dotazy Q: Kolik? A: Query Monitor Q: Jaké jsou dlouhodobě pomalé? A: Slowlog
  11. 11. Infrastruktura Webová řešení Marketing @smitka Lynt services s.r.o. Ladění MySQL serveru • http://mysqltuner.com/ • Query Cache, Buffery, DB Enginy • Alternativa https://launchpad.net/mysql-tuning-primer • Další nástroje (mysqlreport) https://github.com/daniel- nichter/hackmysql.com
  12. 12. Infrastruktura Webová řešení Marketing @smitka Lynt services s.r.o. mysqltuner.pl slow-query-log = 1 slow-query-log-file = /var/log/mysql/slow.log long_query_time = 1 log-queries-not-using-indexes max_connections=50 query_cache_type = 1 query_cache_size = 64M query_cache_limit = 2M Při velké konkurenčnosti na multiprocesorovém systému však zdržuje!
  13. 13. Infrastruktura Webová řešení Marketing @smitka Lynt services s.r.o. Transient API $data = tohle_trva_fakt_dlouho();
  14. 14. Infrastruktura Webová řešení Marketing @smitka Lynt services s.r.o. Transient API $data = get_transient( 'unikatni_klic' ); if( WP_DEBUG || $data === false ) { $data = tohle_trva_fakt_dlouho(); set_transient( 'unikatni_klic', $data, DAY_IN_SECONDS ); } https://codex.wordpress.org/Transients_API
  15. 15. Infrastruktura Webová řešení Marketing @smitka Lynt services s.r.o. get_transient() wp-includes/options.php function get_transient( $transient ) { ... if ( wp_using_ext_object_cache() ) { $value = wp_cache_get( $transient, 'transient' ); } else { $transient_option = '_transient_' . $transient; if ( ! defined( 'WP_INSTALLING' ) ) { // If option is not in alloptions, it is not autoloaded and thus has a timeout $alloptions = wp_load_alloptions(); if ( !isset( $alloptions[$transient_option] ) ) { $transient_timeout = '_transient_timeout_' . $transient; if ( get_option( $transient_timeout ) < time() ) { delete_option( $transient_option ); delete_option( $transient_timeout ); $value = false; } } } if ( ! isset( $value ) ) $value = get_option( $transient_option ); } ... } Umí využívat Object-Cache Xcache, APC, Redis, Memcached,…
  16. 16. Infrastruktura Webová řešení Marketing @smitka Lynt services s.r.o. Profilování PHP $start = microtime(true); // jedeme! $stop = microtime(true); error_log($stop - start); /* memory_get_peak_usage(); memory_get_usage(); */
  17. 17. Infrastruktura Webová řešení Marketing @smitka Lynt services s.r.o. Blackfire.io https://blackfire.io/
  18. 18. Infrastruktura Webová řešení Marketing @smitka Lynt services s.r.o. 3 hlavní komponenty • Probe – rozšíření pro PHP • Agent – posílač dat do služby + CLI • Companion – rozšíření do Chrome pro spouštění testů • https://blackfire.io/docs/up-and-running/installation • Server ID + Token • Client ID + Token
  19. 19. Infrastruktura Webová řešení Marketing @smitka Lynt services s.r.o. Blackfire.io – Premium na měsíc zdarma
  20. 20. Infrastruktura Webová řešení Marketing @smitka Lynt services s.r.o. Dimenze • Wall Time • I/O Wait • CPU Time • Memory • Network • HTTP požadavky • SQL dotazy
  21. 21. Infrastruktura Webová řešení Marketing @smitka Lynt services s.r.o.
  22. 22. Infrastruktura Webová řešení Marketing @smitka Lynt services s.r.o. Když se to moc opakuje public function ziskat() { $velka_instance_neceho = new Neco(); $vystup = $velka_instance_neceho->tezko_získat(); return $vystup; } public function ziskat() { static $vystup; if (!isset($vystup)) { $velka_instance_neceho = new Neco(); $vystup = $velka_instance_neceho->tezko_ziskat(); } return $vystup; }
  23. 23. Infrastruktura Webová řešení Marketing @smitka Lynt services s.r.o. Jak zprofilovat POST a jiné podivnosti? Blackfire lze spouštět i z příkazové řádky: blackfire curl 'data' blackfire --samples=10 run php -r 'echo "WPweekend!"; blackfire upload CPU-20160526T202602.cpuprofile (výkon js v prohlížeči) blackfire upload homepage-xdebug.out (výstup z xdebug)
  24. 24. Infrastruktura Webová řešení Marketing @smitka Lynt services s.r.o. Testy - .blackfire.yml tests: "Homepage": path: "/" assertions: - "metrics.sql.queries.count < 30" - "main.peak_memory < 30mb" - "metrics.http.requests.count < 5"
  25. 25. Infrastruktura Webová řešení Marketing @smitka Lynt services s.r.o. Pochlubte se svým profilem na blogu ;-) WP Oembed provider: wp_oembed_add_provider('https://blackfire.io/profiles/*', 'https://blackfire.io/oembed' );
  26. 26. Infrastruktura Webová řešení Marketing @smitka Lynt services s.r.o. Děkuji za pozornost! Dále si přečtěte: https://lynt.cz/blog/10-nejcastejsich-problemu-modernich-webu https://lynt.cz/blog/optimalizace-vykonu-webovych-aplikaci-na-co-se-zamerit

×