Performance Now! Was tun bei Besucherspitzen?

18
Performance Now! Was tun bei Besucherspitzen?

description

Performance Now! Was tun bei Besucherspitzen? von Martin Reichard, LOTUM, am 7. Februar 2011 beim 7. Webmontag.talk in Manhheim.

Transcript of Performance Now! Was tun bei Besucherspitzen?

Page 1: Performance Now! Was tun bei Besucherspitzen?

Performance Now!Was tun bei Besucherspitzen?

Page 2: Performance Now! Was tun bei Besucherspitzen?

Ich

Martin ReichardCEO & Head of Technology

28 Jahre altInformatik: FH Gießen und Uni Karlsruhe

[email protected]@Mart_out

Page 3: Performance Now! Was tun bei Besucherspitzen?

LOTUM

- Seit 2006- Bad Nauheim- Schueler.CC- Revolution

Page 4: Performance Now! Was tun bei Besucherspitzen?

Schueler.CC

Zweitgrößtes deutsches Schülernetzwerk

Über 2 Mio. angemeldete Schüler

Von Reichweite her in Top10 der deutschen Websites (laut IVW)

Page 5: Performance Now! Was tun bei Besucherspitzen?

Situation

Website

plötzlicher Besucheransturm

Server überlastet

Website langsam

http://www.flickr.com/photos/72969187@N00/248272298/ http://www.flickr.com/photos/lynac/321100379/

=>

Page 6: Performance Now! Was tun bei Besucherspitzen?

Voraussetzungen

MySQL

PHP

noch kein ausgereiftes Server-Cluster

Page 7: Performance Now! Was tun bei Besucherspitzen?

Oh mein Gott! Was soll ich machen?!

Don‘t Panic!

Überblick verschaffen

kein purer Aktionismus (wie z.B. Micro-Optimierungen)

http://www.flickr.com/photos/lifeontheedge/416514144/

Page 8: Performance Now! Was tun bei Besucherspitzen?

InnoDB statt MyIsam

mysql> SHOW PROCESSLIST;

häufig „locked“?

=> evtl. InnoDB statt MyIsam

Page 9: Performance Now! Was tun bei Besucherspitzen?

my.cnf

max_connections = ?

innodb_buffer_pool_size = ?(RAM sollte sinnvoll ausgenutzt werden)

innodb_flush_log_at_trx_commit = 0

innodb_flush_method = O_DIRECT

Page 10: Performance Now! Was tun bei Besucherspitzen?

Query-Optimierung

Query Summe AvgTime MaxTime Count

QueryName1 208.43736219406 0.008399 3.001617 24818

QueryName2 188.77226877213 0.009765 3.288036 19332

QueryName3 142.97422361374 0.006405 3.002347 22323

QueryName4 136.00585031509 0.004564 2.998144 29802

QueryName5 108.8049595356 0.029567 4.778876 3680

QueryName6 101.94781637192 0.010236 3.129176 9960

QueryName7 95.042063713074 0.002791 1.439899 34047

QueryName8 94.692739009857 0.016085 4.106811 5887

mysqldumpslow /var/log/mysql/mysql-slow.log | less

Oder besser:

Page 11: Performance Now! Was tun bei Besucherspitzen?

Query-Optimierung: Indizes

mysql> SELECT COUNT(*) FROM wm_tip WHERE Goals_Team1=1;+----------+| count(*) |+----------+| 1092778 | +----------+1 row in set (0.87 sec)

mysql> EXPLAIN SELECT COUNT(*) FROM wm_tip WHERE Goals_Team1=1;+----+-------------+---------+------+------------------+------------------+---------+-------+---------+-------------+| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |+----+-------------+---------+------+------------------+------------------+---------+-------+---------+-------------+| 1 | SIMPLE | wm_tip | ALL | NULL | NULL | NULL | NULL | 3029244 | Using where | +----+-------------+---------+------+------------------+------------------+---------+-------+---------+-------------+1 row in set (0.02 sec)

Page 12: Performance Now! Was tun bei Besucherspitzen?

Query-Optimierung:weitere Möglichkeiten

direkte Optimierung

Caching (z.B. mit memcache)

$memcache = new Memcache;$memcache->connect('localhost', 11211);$memcache->set('key', $variable, false, 60);$get_result = $memcache->get('key');

Page 13: Performance Now! Was tun bei Besucherspitzen?

Webserver

http://www.flickr.com/photos/swift/315996596/

Page 14: Performance Now! Was tun bei Besucherspitzen?

Webserver

OpCode-Caching

APC, eAccelerator, Xcache

http://en.wikipedia.org/wiki/List_of_PHP_accelerators

http://www.flickr.com/photos/renaissancechambara/2288556895/

Page 15: Performance Now! Was tun bei Besucherspitzen?

Webserver: Sessions

Sessions in Memcache ablegen

einfach php.ini anpassen

session.save_handler = memcachesession.save_path="<memcache_server>:11211?persistent=1&weight=1&timeout=1&retry_interval=15"

Page 16: Performance Now! Was tun bei Besucherspitzen?

Auf lange Sicht

Umfassendes Monitoring

Skalierbares Serversystem

Replikation / Sharding

Sphinx / SolR

NoSQL

Individuelle Technologien

Cloud?

...

Page 17: Performance Now! Was tun bei Besucherspitzen?

lotum.de

Fragen?

Spannende Aufgaben

gute (und nette) Kollegen

viel Freiheit

viel Spaß

Page 18: Performance Now! Was tun bei Besucherspitzen?

lotum.de

Fragen?

Spannende Aufgaben

gute (und nette) Kollegen

viel Freiheit

viel Spaß