Performance Now!<br />Was tun bei Besucherspitzen?<br />Performance Now!<br />
Ich<br />Martin Reichard<br />CEO & Head of Technology<br />28 Jahre alt<br />Informatik: FH Gießen und Uni Karlsruhe<br /...
LOTUM<br /><ul><li> Seit 2006
 Bad Nauheim
Schueler.CC
 Revolution</li></li></ul><li>Schueler.CC<br />Zweitgrößtes deutsches Schülernetzwerk<br />Über 2 Mio. angemeldete Schüler...
Situation<br /><ul><li> Website
 plötzlicher Besucheransturm
 Server überlastet
 Website langsam</li></ul>=><br />http://www.flickr.com/photos/72969187@N00/248272298/<br />http://www.flickr.com/photos/l...
Voraussetzungen<br /><ul><li>MySQL
 PHP
 noch kein ausgereiftes Server-Cluster</li></li></ul><li>Oh mein Gott! Was soll ich machen?!<br /><ul><li>Don‘t Panic!
 Überblick verschaffen
 kein purer Aktionismus (wie z.B. Micro-Optimierungen)</li></ul>http://www.flickr.com/photos/lifeontheedge/416514144/<br />
InnoDB statt MyIsam<br /><ul><li>mysql> SHOW PROCESSLIST;
 häufig „locked“?</li></ul>=> evtl. InnoDB statt MyIsam<br />
my.cnf<br /><ul><li>max_connections = ?
Upcoming SlideShare
Loading in …5
×

Performance Now! Was tun bei Besucherspitzen?

1,020 views

Published on

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

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,020
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Performance Now! Was tun bei Besucherspitzen?

  1. 1. Performance Now!<br />Was tun bei Besucherspitzen?<br />Performance Now!<br />
  2. 2. Ich<br />Martin Reichard<br />CEO & Head of Technology<br />28 Jahre alt<br />Informatik: FH Gießen und Uni Karlsruhe<br />reichard@lotum.de<br />@Mart_out<br />
  3. 3. LOTUM<br /><ul><li> Seit 2006
  4. 4. Bad Nauheim
  5. 5. Schueler.CC
  6. 6. Revolution</li></li></ul><li>Schueler.CC<br />Zweitgrößtes deutsches Schülernetzwerk<br />Über 2 Mio. angemeldete Schüler<br />Von Reichweite her in Top10 der deutschen Websites (laut IVW)<br />
  7. 7. Situation<br /><ul><li> Website
  8. 8. plötzlicher Besucheransturm
  9. 9. Server überlastet
  10. 10. Website langsam</li></ul>=><br />http://www.flickr.com/photos/72969187@N00/248272298/<br />http://www.flickr.com/photos/lynac/321100379/<br />
  11. 11. Voraussetzungen<br /><ul><li>MySQL
  12. 12. PHP
  13. 13. noch kein ausgereiftes Server-Cluster</li></li></ul><li>Oh mein Gott! Was soll ich machen?!<br /><ul><li>Don‘t Panic!
  14. 14. Überblick verschaffen
  15. 15. kein purer Aktionismus (wie z.B. Micro-Optimierungen)</li></ul>http://www.flickr.com/photos/lifeontheedge/416514144/<br />
  16. 16. InnoDB statt MyIsam<br /><ul><li>mysql> SHOW PROCESSLIST;
  17. 17. häufig „locked“?</li></ul>=> evtl. InnoDB statt MyIsam<br />
  18. 18. my.cnf<br /><ul><li>max_connections = ?
  19. 19. innodb_buffer_pool_size = ?</li></ul>(RAM sollte sinnvoll ausgenutzt werden)<br /><ul><li>innodb_flush_log_at_trx_commit = 0
  20. 20. innodb_flush_method = O_DIRECT</li></li></ul><li>Query-Optimierung<br />mysqldumpslow /var/log/mysql/mysql-slow.log | less<br />Oder besser:<br />
  21. 21. Query-Optimierung: Indizes<br />mysql> SELECT COUNT(*) FROM wm_tip WHERE Goals_Team1=1;<br />+----------+<br />| count(*) |<br />+----------+<br />| 1092778 | <br />+----------+<br />1 row in set (0.87 sec)<br />mysql> EXPLAIN SELECT COUNT(*) FROM wm_tip WHERE Goals_Team1=1;<br />+----+-------------+---------+------+------------------+------------------+---------+-------+---------+-------------+<br />| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |<br />+----+-------------+---------+------+------------------+------------------+---------+-------+---------+-------------+<br />| 1 | SIMPLE | wm_tip | ALL | NULL | NULL | NULL | NULL | 3029244 | Usingwhere | <br />+----+-------------+---------+------+------------------+------------------+---------+-------+---------+-------------+<br />1 row in set (0.02 sec)<br />
  22. 22. Query-Optimierung:<br />weitere Möglichkeiten<br /><ul><li> direkte Optimierung
  23. 23. Caching (z.B. mit memcache)</li></ul>$memcache = new Memcache;<br />$memcache->connect('localhost', 11211);<br />$memcache->set('key', $variable, false, 60);<br />$get_result = $memcache->get('key');<br />
  24. 24. Webserver<br />http://www.flickr.com/photos/swift/315996596/<br />
  25. 25. Webserver<br /><ul><li>OpCode-Caching
  26. 26. APC, eAccelerator, Xcache
  27. 27. http://en.wikipedia.org/wiki/List_of_PHP_accelerators</li></ul>http://www.flickr.com/photos/renaissancechambara/2288556895/<br />
  28. 28. Webserver: Sessions<br /><ul><li>Sessions in Memcache ablegen
  29. 29. einfach php.ini anpassen</li></ul>session.save_handler = memcachesession.save_path="<memcache_server>:11211?persistent=1&weight=1&timeout=1&retry_interval=15"<br />
  30. 30. Auf lange Sicht<br /><ul><li> Umfassendes Monitoring
  31. 31. Skalierbares Serversystem
  32. 32. Replikation / Sharding
  33. 33. Sphinx / SolR
  34. 34. NoSQL
  35. 35. Individuelle Technologien
  36. 36. Cloud?
  37. 37. ...</li></li></ul><li>lotum.de<br /><ul><li> Spannende Aufgaben
  38. 38. gute (und nette) Kollegen
  39. 39. viel Freiheit
  40. 40. viel Spaß</li></ul>Fragen?<br />
  41. 41. lotum.de<br /><ul><li> Spannende Aufgaben
  42. 42. gute (und nette) Kollegen
  43. 43. viel Freiheit
  44. 44. viel Spaß</li></ul>Fragen?<br />

×