26
@smitka Lynt services s.r.o. Infrastrukt ura Webová řešení Marketing WP – výkon a jeho profilování Vláďa Smitka https:// lynt.cz

WP výkon a jeho profilování

Embed Size (px)

Citation preview

Page 1: WP výkon a jeho profilování

@smitka Lynt services s.r.o.

Infrastruktura

Webová řešení

Marketing

WP – výkon a jeho profilování

Vláďa Smitkahttps://lynt.cz

Page 2: WP výkon a jeho profilování

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

Page 3: WP výkon a jeho profilování

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 FPM127.0.0.1:9056

PHP 7.0 FPM127.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

Page 4: WP výkon a jeho profilování

Infrastruktura

Webová řešení

Marketing

@smitka Lynt services s.r.o.

Nastavení VBoxu

Page 5: WP výkon a jeho profilování

Infrastruktura

Webová řešení

Marketing

@smitka Lynt services s.r.o.

První kontakt

• https://gtmetrix.com/

• http://www.webpagetest.org/

Page 6: WP výkon a jeho profilování

Infrastruktura

Webová řešení

Marketing

@smitka Lynt services s.r.o.

Waterfall

Page 7: WP výkon a jeho profilování

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

Page 8: WP výkon a jeho profilování

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

Page 9: WP výkon a jeho profilování

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/

Page 10: WP výkon a jeho profilování

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

Page 11: WP výkon a jeho profilování

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

Page 12: WP výkon a jeho profilování

Infrastruktura

Webová řešení

Marketing

@smitka Lynt services s.r.o.

mysqltuner.pl

slow-query-log = 1slow-query-log-file = /var/log/mysql/slow.loglong_query_time = 1log-queries-not-using-indexes

max_connections=50

query_cache_type = 1query_cache_size = 64Mquery_cache_limit = 2M

Při velké konkurenčnosti na multiprocesorovém systému však zdržuje!

Page 13: WP výkon a jeho profilování

Infrastruktura

Webová řešení

Marketing

@smitka Lynt services s.r.o.

Transient API

$data = tohle_trva_fakt_dlouho();

Page 14: WP výkon a jeho profilování

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

Page 15: WP výkon a jeho profilování

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,…

Page 16: WP výkon a jeho profilování

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();*/

Page 17: WP výkon a jeho profilování

Infrastruktura

Webová řešení

Marketing

@smitka Lynt services s.r.o.

Blackfire.io

https://blackfire.io/

Page 18: WP výkon a jeho profilování

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

Page 19: WP výkon a jeho profilování

Infrastruktura

Webová řešení

Marketing

@smitka Lynt services s.r.o.

Blackfire.io – Premium na měsíc zdarma

Page 20: WP výkon a jeho profilování

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

Page 21: WP výkon a jeho profilování

Infrastruktura

Webová řešení

Marketing

@smitka Lynt services s.r.o.

Page 22: WP výkon a jeho profilování

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; }

Page 23: WP výkon a jeho profilování

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)

Page 24: WP výkon a jeho profilování

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"

Page 25: WP výkon a jeho profilování

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' );

Page 26: WP výkon a jeho profilování

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