Insbesondere große Webseiten müssen performant sein. Bei großer Last, also großen Besucheransturm, hilft eine richtige Serverkonstellation, die Webseite am Leben zu erhalten. In dieser Sendung steht Sebastian Heinisch Rede und Antwort und berichtet vom seinem Server-Alltag.

Höre Technikwürze auf SoundCloud: Diese Folge | Alle Folgen

In der Technikwürze widmen wir uns in dieser Ausgabe verstärkt der Grundlage einer jeden Webseite: Dem Webserver. Ohne ist nicht viel los, erst Recht, wenn mehr als fünf Leute auf diesen zugreifen. Dazu reden wir mit Sebastian Heinisch. Er ist technisch verantwortlich für die Webseite feuerwache.net, die in einem Rechenzentrum in Hannover läuft. Die Webserver liefern die Inhalte mittels Lighttpd aus, die Datenbank wird per MySQL betrieben. Ein Pound Loadbalancer verteilt die Anfragen, die Server tauschen untereinander mittels Memcache die Daten aus. Lokal hat jede PHP Instanz auf einen xCache-Zugriff.

Ausgangslage

** openSuSE

** Standardrechner

  • Serverüberlastungen kamen immer Regelmässiger
  • Hektik brach aus, was nun?

Erste Optimierungsversuche

  • Erst nur MySQL Server ausgelagert, brachte keine wirkliche Verbesserung
  • Das Problem: Alles muss auf einmal umgestellt werden!
  • Probleme mit mehreren Servern?

** Upload Dateien müssen Syncronisiert werden

** Sessions müssen übernommen werden

** Cache muss global gelöscht werden

Lösungen

** Schneller Webserver

** Wird u.a. von Youtube, thepiratebay, myspace eingsetzt

** FastCGI als PHP Schnittstelle

** xCache nutzen -> deutliche Performance Steigerung (PHP wird kompiliert)

** Speichert lokalen Cache (Variablen Cache) – Beispiel: “UserID to Username” (mittels xCache)

** Verteilt die Anfragen auf die einzelnen Webserver

** Unterschiedliche Methoden:

** User greift immer auf den gleichen Webserver zu

*** Vorteil: Kein Problem mit Sessions

*** Nachteil: Wenn Server weg, dann User weg

** User greift zufällig auf Server zu:

*** Effizientere Verteilung (Server mit wenig Auslastung wird bevorzugt)

*** Nachts können Server heruntergefahren werden (Stromkosten!)

** Achtung: User Sessions -> Memcache

** SEHR schnell – alle Daten aus dem Ram

** Hält die PHP-Sessions

** Speichert globalen Cache (Funktionscaching) – Beispiel “Feuerwache by ID”

** Wird u.a. von Facebook eingesetzt

** Speichert die Uploads der User und verteilt die über smbfs

** Keine Ahnung warum, aber bei mir schneller als NFS

  • MySQL – von MyISAM auf InnoDB

** InnoDB transaktionssicher (commit, rollback etc.)

** Zeilensperre anstatt Tabellensperre

** Fremdschlüssel (on Delete)

** Mehr Speeeeed 🙂

Monitoring

  • Alles sollte überwacht werden – RAM, CPU, Laufzeiten, HTTP-Antworten, DNS, Uhrzeit, Festplatte voll? etc.

** Alles was irgendwann zu Fehler führen könnte, wird auch zu Fehlern führen!

** iPhone Client

** SMS-Warnung

** E-Mail Warnung

** Gruppen

Wahl der Hardware

  • Eigene Hardware:

** Direkter Zugriff

** Schneller HDD austausch bei ausfall

** Nicht auf einen Dienstleister angewiesen sein

** 2 Netze – Intern und Extern

  • Mieten

** Günstiger

** nicht so flexibel

  • Backup

** Im Rechenzentrum in dem auch das Spiel läuft

** Zusätzlich in anderes Rechenzentrum, anderer Anbieter (Strato)

Fazit

  • Frühzeitig Gedanken machen
  • Was machen die großen? – Facebook, YouTube, Google
  • Hochwertige Hardware kaufen – man kauft sonst doppelt. Zum Beispiel bei 1he-server

Tags: , , , , , ,

Dieser Beitrag wurde am Samstag, 30. Januar 2010 um 18:17 Uhr in der Kategorie Podcast veröffentlicht.
Du kannst einen Kommentar hinterlassen, oder einen Trackback von deiner Seite aus senden.

Kommentare

  • Julius Beckmann
    am 31. Januar 2010, 15:02 Uhr

    >> xCache nutzen -> deutliche Performance Steigerung (PHP wird kompiliert)
    Alternative APC.
    Verbesserung: PHP wird nie kompiliert sondern interpretiert. Es wird lediglich der OpCode gecacht.

    >> Mehr Speeeeed :)
    Von reinen zugriffzeiten her ist MyISAM schneller, aber InnoDB hat auch markante Vorteile.

    >> Nagios
    Kleinere Alternative ist “Munin”

  • Stephan Krauß
    am 1. Februar 2010, 09:01 Uhr

    Hallo !

    Das war für mich persönlich die beste Sendung seit langem. Besonders haben mir die Informationen über Xcache und Memcache gefallen. Leider habe ich meine Homepage bei einem Massenhoster und es lohnt auch nicht dafür einen eigenen Server aufzubauen.

    Mich würde interessieren welche Alternativen unter Php existiern um einen Cache einzurichten.

    Mit freundlichen Grüßen

    Stephan

  • Mike Pridik
    am 1. Februar 2010, 09:13 Uhr

    Super informative Sendung gewesen. Hab mich immer schon mal gefragt, wie das ab gewissen Größenordnungen abläuft.

    Werde den Podcast gleich einem Bekannten empfehlen, der Ähnliches vorhat. Bin ja mal gespannt, ob er sich darüber schon einmal Gedanken gemacht hat.

    Danke euch!

  • Sebastian Heinisch
    am 1. Februar 2010, 09:40 Uhr

    @Julius:

    Richtig, MyISAM ist bei einem Benutzer schneller – aber sobald die Prozesse sich beim Tabellen-Locken gegenseitig Zeit kosten, ist MyISAM deutlich langsamer.

  • Julius Beckmann
    am 1. Februar 2010, 09:59 Uhr

    @Sebastian Heinisch
    Das passiert aber NUR beim Schreiben.
    MyISAM hat beim write einen Tabellenweiten Lock, wobei InnoDB nur einen Spaltenweiten Lock hat und da natürlich schneller ist.
    Beim reinen Lesen ist MyISAM jedoch schneller als InnoDB.

  • Sebastian Heinisch
    am 1. Februar 2010, 10:15 Uhr

    @Julius:

    Stimmt :) Man muss halt wie überall, immer schauen was man selbst für Anforderungen hat.

  • marc
    am 1. Februar 2010, 14:01 Uhr

    Schöne Folge. Interessant zu hören und schön, dass Sebastian mit solcher Leidenschaft beim Thema ist.

  • Jörg
    am 1. Februar 2010, 18:11 Uhr

    Bin auf dem Gebiet Laie, da kommt diese Sendung ganz recht. Ich muss sagen, tolle Sendung! Habe schon lange nicht mehr so viele gute Tipps bekommen. Auch sehr Praxisbezogen und Beispielhaft erklärt.

    Klasse

  • Eric
    am 2. Februar 2010, 15:56 Uhr

    Der Player sowie der Download der MP3 brechen nach ca zehn Minuten ab.

  • macx
    am 2. Februar 2010, 16:18 Uhr

    Die Folge wurde bisher knapp über 2.000 Mal runtergeladen. Ich konnte diese eben auch problemlos laden. Vielleicht haut ja was mit deinem DSL-Anschluss nicht hin?

  • Peter
    am 2. Februar 2010, 16:40 Uhr

    Interessanter (Leidens-)Beitrag mit vielen Tipps – auch wenn das ja wenig mit Webstandards zu tun hat und wohl auch erst bei richtig fett besuchten Websites wichtig wird.

  • Felix M.
    am 2. Februar 2010, 20:52 Uhr

    Ich spiele schon etwas länger Feuerwache und finde das Spiel einfach nur gut.
    Die ganzen Erweiterungen und alles ist einfach zu einem sehr beliebten Spiel geworden. Ich sage: “Weiter so SEBASTIAN!!” :-)

  • Tekl
    am 3. Februar 2010, 10:14 Uhr

    Hammermäßig gute Folge. Super strukturiert, viele Details und Anregungen. Besonders schön, dass nicht nur Optimierungs-Tipps gegeben werden, sondern vor allem auch die Gründe genannt werden.

  • Hans Zettel
    am 4. Februar 2010, 23:30 Uhr

    Wirklich ausgesprochen gute Sendung. Auch gerade weiterempfohlen.

    Würde auch gerne mehr zu diesen Themenbereichen hören

  • Paul
    am 5. Februar 2010, 08:12 Uhr

    Auch mir hat Feuerwache besonders gut gefallen.

  • Micha
    am 5. Februar 2010, 11:03 Uhr

    Hallo,

    tolle Sendung. Ich hätte aber noch eine Frage: wie mißt man Zugriffsstatistiken wenn man mehrere Server loadbalanct? Da ja jeder Request auf einem beliebigen Server landen kann, wie kann man zuverlässig die Anzahl der Besucher, aufgeruften Seiten etc. herausfinden?

  • Daniel Jagzent
    am 5. Februar 2010, 16:29 Uhr

    @Micha
    dann kann man (a) externe Log-Mechanismen wie Piwik oder eTracker benutzen oder (b) die Logfiles der einzelnen Server z.B. per Syslog auf ein dedizierten Logserver leiten .

  • Dominik Kuss
    am 5. Februar 2010, 17:51 Uhr

    Hallo Technikwürze,

    das ist eine ganz großartige Sendung. Sie enthält viele tolle Tips – von Sebastian hervorragend erklärt – und ist sehr empfehlenswert! Auch für Betreiber “kleiner Websites”, die nicht über eine Multiserverumgebung nachdenken.

    Ich werde mit Sicherheit einige dieser Tips ausprobieren.

    Viele Grüße und macht weiter so!

  • Michael Wesp
    am 10. Februar 2010, 07:06 Uhr

    Diese Folge war mal wieder ein absolutes Highlight. Aus der Praxis – für die Praxis. Macht weiter so!

  • Don
    am 13. Februar 2010, 16:12 Uhr

    Sehr gute Sendung! Ein Blick hinter die Kulisse der Serverkonfiguration.

  • Fortrabbit
    am 14. Februar 2010, 20:06 Uhr

    Schöne Sendung,
    wir haben als kleiner Hoster ein ähnlich grosses Projekt (Streetfiles.org) zu handlen. Vieles machen wir ganz ähnlich. Virtualisierung (Xen, http://xen.org/) hilft uns flexibler zu sein. Neben Loadbalancing nutzen wir noch einen Proxyserver (Varnisch, http://varnish-cache.org/) ein.

  • Lukas
    am 17. Februar 2010, 22:41 Uhr

    Liebes TW-Team,

    diese Sendung hatte diesmal die richtige Würze ;-) – hat mir absolut gut gefallen und mir viel gebracht – danke und weiter so

    Grüße Lukas

  • webagentur
    am 18. Februar 2010, 14:58 Uhr

    Hallo Technikwürze,

    klasse Sendung. Habe auch schon oft über Optimierungsmaßnahmen nachgedacht, habe aber, um ehrlich zu sein, ein wenig Herzklopfen dabei gehabt.

    Jetzt habe ich wieder Mut das anzugehen.
    Danke Euch!

  • Alex
    am 18. Februar 2010, 21:54 Uhr

    Ein echt super interessanter Podcast. Hab sehr viel gelernt.
    Was mich evtl. noch interessieren würde:
    Kriegst du wenigstens die Kosten rein, die dieses gesamte System kostet. Du hast ja gemeint, du betreibst es als Hobby.

    Gruß,
    Alex

  • Dirk
    am 23. Februar 2010, 13:32 Uhr

    Das war eine extrem gute Folge. Sehr schön am Praxisbeispiel aufgezogen. ich finde so lernt man mehr, vor allem weil neben der Theorie auch die Gründe und sofortige Auswirkungen genannt wurden. Es wurde so sehr plastisch und anschaulich.

    Danke.

  • Thomas Dorloff
    am 26. Februar 2010, 19:57 Uhr

    Ich experimentiere gerade mit der Google AppEngine. Kann mit einer Unmenge an Aufrufen gleichzeitig umgehen und man zahlt nur für die CPU-Sekunden/Datentransfers etc.
    Vom Prinzip her super, weil man sich nicht um Hardware usw. kümmern muss und die Skalierung auch nicht in Serverinstanzen erfolgt. Funktioniert bisher ganz gut, ist aber in einigen Bereichen sehr eingeschränkt und ist ganz klar auf viele, aber kurze Zugriffe ausgerichtet.

  • Ole
    am 9. März 2010, 22:43 Uhr

    Moinsen,

    War tatsächlich sehr nette Show, besonders weil ihr mal einen blick über den Tellerrand wagt, nichts desto trotz. Zur Feuerwache page: Du kannst an ganz anderen stellen noch Performance raus holen. z.b. in deinen Lighty einstellungen (E-Tags/expire header).
    Dazu auch noch auf die inline styles verzichten (die eh unschön sind) und dann natürlich noch mal die 13(!) extra requests zusammenfassen, grade wenn du sagst das du mit den Requests ein Problem hast. Atm ist es user*13 = requests/user. Wennde daraus 3 requests machst:
    1 x PHP bzw die ausgabe (HTML)
    1x CSS
    1x JS
    Die letzten beiden sogar noch compressed, haste eine menge gewonnen.

    LG

  • Matthias
    am 17. März 2010, 17:10 Uhr

    Super Sendung!
    Interessant wäre noch gewesen wie Leistungsstark der Internetanschluss sein muss um diese Server zu betreiben! Bei wieviel User bricht ein syncroner DSL Anschluss mit etwa 10Mbit ein!? usw…
    Macht es Sinn sowas zuhause zu betreiben?
    sg

  • Boris Meyer
    am 26. März 2010, 02:21 Uhr

    Kann man eine DB einfach so von MyISAM auf InnoDB umstellen oder muss man dabei noch etwas beachten?

    Ich habe eine Anwendung bei der viele Anwender parallel was in die DB schreiben. Und fande das Argument mit dem Speed natürlich mehr als interessant.

    Kann nun eine bestehende Tabelle einfach auf InnoDB umstellen oder hat eine Umstellung Anpassungen zur Folge?

Und was hast du zum Thema zu sagen?

Fülle bitte alle mit *-gekennzeichneten Felder aus.

Warning: Undefined variable $req in /var/www/vhosts/technikwuerze.de/httpdocs/blogmin/wp-content/themes/technikwuerze2/single.php on line 77
/>

Du darfst Textile verwenden, um deinen Beitrag auszuzeichen.