Technikwürze

Loadbalancer

Technikwürze 160

Meta: S3 · E33 · Typ full · Veröffentlicht · Aktualisiert

Moderation: David Maciejewski

Gäste: Sebastian Heinisch

Zusammenfassung

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.

Inhalt

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

  • Wie alles begann: LAMP (Linux, Apache, MySQL PHP) auf einem Server
    openSuSE
    Standardrechner
  • Serverüberlastungen kamen immer Regelmässiger
  • Hektik brach aus, was nun?
Lighttpd
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)
  • Pound
    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
  • 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
  • Samba
    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!
    • Nagios
      iPhone Client
      SMS-Warnung
      E-Mail Warnung
      Gruppen
    • Jet Profiler

    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

    Kommentare (64)

    • Julius Beckmann Julius Beckmann

      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ß Stephan Krauß

      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 Mike Pridik

      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!

    • marc marc

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

    • Jörg Jörg

      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 Eric

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

    • macx macx

      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 Peter

      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. Felix M.

      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 Tekl

      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 Hans Zettel

      Wirklich ausgesprochen gute Sendung. Auch gerade weiterempfohlen.

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

    • Paul Paul

      Auch mir hat Feuerwache besonders gut gefallen.

    • Micha Micha

      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?

    • Dominik Kuss Dominik Kuss

      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 Michael Wesp

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

    • Don Don

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

    • Fortrabbit Fortrabbit

      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 Lukas

      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 webagentur

      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 Alex

      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 Dirk

      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 Thomas Dorloff

      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 Ole

      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 Matthias

      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 Boris Meyer

      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?

    By submitting your data, you agree that all entered data may be saved and displayed as a comment.