N3rd 4 speed

29
N3rd 4 Speed CPU [||||| ] Mem [||||||||||||||||| ] Conversion [|||||||||||||||||||||||||||||||||||||||] Geschwindigkeit ist keine Hexerei. (Johann Nestroy) René Penner @papst23

Transcript of N3rd 4 speed

Page 1: N3rd 4 speed

N3rd 4 Speed

CPU [||||| ]Mem [||||||||||||||||| ]Conversion [|||||||||||||||||||||||||||||||||||||||]

Geschwindigkeit ist keine Hexerei. (Johann Nestroy)

René Penner@papst23

Page 2: N3rd 4 speed

Agenda

1. Warum |||||||||||||||||||||||||||||||||||2. Messen ||||||||||||||||||||||||||||||||||3. Frontend ||||||||||||||||||||||||||||||||4. Backend |||||||||||||||||||||||||||||||||5. ReverseProxy ||||||||||||||||||||||||||||

Slides [||||||||||||||||||||||||||||||||||||||||||||||||||||||]

Page 3: N3rd 4 speed

Warum

- Gewinn- Google: 500ms langsamer => -20% Traffic- Amazon: 100ms langsamer => -1% Conversion- Mozilla: 2200ms schneller => +15% Downloads

- Kosten- Traffic & Bandbreite => weniger- Hardwarebedarf => weniger

Slides [|| ]

Page 4: N3rd 4 speed

Warum

- User Intends- Bounce Rate => weniger- Seitenaufrufe => mehr

- Crawlability*- Inhalte => schneller- Inhalte => mehr

Slides [|||| ]

• Die Performance … hat auf jeden Fall darauf einen Einfluß, mit welcher Frequenz Google crawled. (Johannes Beus aka. Sistrix - http://bit.ly/z7Zjfr)

Page 5: N3rd 4 speed

Messen

- Page Load Time- Response Size- Response Time (first Bit)- Rendergeschwindigkeit- Gleichzeitige Requests (Lasttest)

Slides [|||||| ]

Page 6: N3rd 4 speed

Messen

- Loads.in- Pingdom- webpagetest.org

- Firebug- Yslow- Google Page Speed

- ab (Apache Benchmark)

Slides [|||||||| ]

Page 7: N3rd 4 speed

Frontend

Slides [|||||||||| ]

Page 8: N3rd 4 speed

Frontend

Slides [|||||||||||| ]

Page 9: N3rd 4 speed

Frontend

Slides [|||||||||||||| ]

Page 10: N3rd 4 speed

Frontend

- Request minimieren- CSS & JS zusammenfassen- Inline Images (data:base64)- CSS Sprites

- Requestsize optimieren- Bilder komprimieren (Smush.it)- JS/CSS Minifier (JSMin, YUI Compressor)

Slides [|||||||||||||||| ]

Page 11: N3rd 4 speed

Frontend

Slides [|||||||||||||||||| ]

Page 12: N3rd 4 speed

Frontend

Slides [|||||||||||||||||||| ]

Page 13: N3rd 4 speed

Frontend

- Cache Headers

mod_expires.c (a2enmod expires)ExpiresActive OnExpiresByType text/css "access plus 5184000 seconds"

mod_headers.c (a2enmod headers)<filesmatch "\\.(css)$"> Header set Cache-Control "max-age=5184000, public"</filesmatch>

E-Tags nicht vergessen ;)

Slides [|||||||||||||||||||||| ]

Page 14: N3rd 4 speed

Frontend

Slides [|||||||||||||||||||||||| ]

Aus dem Cache - E-Tag match - Mod. since match

Page 15: N3rd 4 speed

Frontend

Slides [|||||||||||||||||||||||||| ]

Nicht aus dem Cache - E-Tag no match - mod since no match

Page 16: N3rd 4 speed

Frontend

- gzip

# console# a2enmod deflate# service apache2 restart

#.htaccessAddOutputFilterByType DEFLATE text/css

Slides [|||||||||||||||||||||||||||| ]

Page 17: N3rd 4 speed

Frontend

Slides [|||||||||||||||||||||||||||||| ]

GZIP aus - 10 KB - 105ms

Page 18: N3rd 4 speed

Frontend

Slides [|||||||||||||||||||||||||||||||| ]

GZIP an - 2.5 KB - 79ms

Page 19: N3rd 4 speed

Frontend

- DOM Elemente – weniger ist mehr

#naja<div id="content">

<h1><strong><em>Headline</em></strong></h1></div><div id="content">

<div class="innercontent"><p>lorem ipsum ...</p>

</div></div>

#besser<h1>Headline</h1><p>lorem ipsum ...</p>

Slides [|||||||||||||||||||||||||||||||||| ]

Page 20: N3rd 4 speed

Frontend

- CSS Selectoren

DIV => schnell.myclass => schnell#myid => schnellUL LI A.myclass => langsamUL li A => sehr langsam* A => pain

UL LI A {color:red} 3 2 1

Slides [|||||||||||||||||||||||||||||||||||| ]

* http://stevesouders.com/efws/css-selectors/universal.php

Page 21: N3rd 4 speed

Backend

Slides [|||||||||||||||||||||||||||||||||||||| ]

Page 22: N3rd 4 speed

Backend

- MySQL- RAM, RAM, mehr RAM- Indexe prüfen- MySQL Version checken- Dedicated DB Server- mysqltuner.pl (Perl Script)- SLOW QUERYS:

/etc/mysql/my.cnf

#log_slow_queries = /var/log/mysql/mysql-slow.log#long_query_time = 1#log-queries-not-using-indexes

Slides [|||||||||||||||||||||||||||||||||||||||| ]

Page 23: N3rd 4 speed

Backend

- Apache & PHP- RAM, RAM, mehr RAM- ACHTUNG: SWAP- .htaccess -> vhosts- Nicht gebrauchte Mods ausschalten- OP-Code Caches: APC / XCache / eAccelerator- mod_pagespeed von Google- Redirects reduzieren!- Alternative Webserver Lighty oder nginx

Slides [|||||||||||||||||||||||||||||||||||||||||| ]

Page 24: N3rd 4 speed

ReverseProxy

Slides [|||||||||||||||||||||||||||||||||||||||||||| ]

http://www.phpgangsta.de/bessere-performance-mit-einem-reverse-proxy

Page 25: N3rd 4 speed

ReverseProxy

- Apache vs. Varnish- Requests: 1.000 - Concurrency: 1- Apache: 9.97 Requests per Second (RAM: 50% CPU: 100%)- Varnish: 3003.98 Requests per Second (RAM: 50% CPU: 5%)

- Requests: 1.000 - Concurrency: 10- Apache: 10.60 Requests per Second (RAM: 95% CPU: 100%)- Varnish: 6391.29 Requests per Second (RAM: 50% CPU: 10%)

- Requests: 10.000 - Concurrency: 100- Apache: Absturz- Varnish: 6179.76 Requests per Second (RAM: 55% CPU: 15%)

Slides [|||||||||||||||||||||||||||||||||||||||||||||| ]

Page 26: N3rd 4 speed

ReverseProxy

- Extrem schnell (asynchron)- Ressourcensparend - Einfache Installation (Ubuntu: 5min)- Caching (in memory)- Load balancing (round robin, random)- Health checking (backend down)- VCL (Varnish configuration language)- ESI (Edge Side Includes)- VMODs (Varnish Modules)

Slides [|||||||||||||||||||||||||||||||||||||||||||||||| ]

-Varnish-

Page 27: N3rd 4 speed

ReverseProxy

- VCL- Backends definieren- Load Balancing einstellen- Cache einstellen

- Welche URLs sollen gecached werden?- Wie lange soll der Cache valid sein?

- HTTP Header modifizieren

Slides [|||||||||||||||||||||||||||||||||||||||||||||||||| ]

-Varnish-

Page 28: N3rd 4 speed

ReverseProxy

- VMODs- Authentication (HTTP Basic authentication)- DeviceAtlas (Mobile Detection)- Digest (Hashes MD5, SHA1 ...)- Redirect- Redis (DB)- Shield (DDoS Protection)

Slides [|||||||||||||||||||||||||||||||||||||||||||||||||||| ]

-Varnish-

Page 29: N3rd 4 speed

ReverseProxy

- ESI (Edge Side Includes)

Slides [||||||||||||||||||||||||||||||||||||||||||||||||||||||]

-Varnish-

<esi:include src="/header.html" />

<esi:include src="/sitebar.html" />

Lorem ipsum

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur