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.
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,083 views

Published on

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

  • Be the first to comment

  • Be the first to like this

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 />

×