Du hast eine Frage? Stell sie der t3n-Community!

? Beispielfragen

Um selbst eine Frage online zu stellen, melde dich bitte an.

Zur Anmeldung

Lastverteilung bei größeren Webprojekten

13 Punkte

Frage markiert als beantwortet

von dpde  Newbie  vor ca einem Jahr

Wie kann ich bei größeren Projekten die Last der Server am besten verteilen?
Zum einen bietet sich ja MySQL-Master und Slave Server an, wo Schreibzugriffe auf den Master geschehen und lesezugriffe nur von einem der Slaves.

Wie kann ich die Last auf den Webserver am besten verteilen?
Gibt es da irgendwo gute Artikel zu?

In die Cloud würde ich ungerne gehen.

Gruß
cisum

Nachträglich bearbeitet am 03.09.10 14:49

5 Antworten

2 Punkte

von milkstyle  Geek  vor ca einem Jahr

Da fallen mir verschiedene Sachen ein: – Caching – Einsatz von Zend Optimizer – Verschlanken von Quellcode – Optimieren von Mysql – Trennung von Dynamischen Inhalten (php/mysql) und statischen Inhalte (js, css, Auslagerung auf einen CDN) – Einsatz von Load Balancern – Abschalten von Logging-Tools bei Apache und Mysql (schlecht fürs Debugging, bringt aber bei richtig vielen Zugriffen auch was)

Grundsätzlich gibt es viele verschiedene Wege und Möglichkeiten Webprojekte zu optimieren und die Last zu minimieren. Geht es dir eher um die, auf den Servern erzeugte Last, Vermeidung und Abhandlung von Lastspitzen, Verringerung der Last die zum User geht oder um alle drei Bereiche?

Nachträglich bearbeitet am 03.08.10 09:22

Kommentare

  • dpde: Welche Last könnte denn zum User gehen?
    Mir geht es primär um die vermeidung von Lastspritzen und somit auch die erzeugte Last auf den Servern möglichst gering zu halten.

    Es ist jetzt wie gesagt noch nicht konkret, also ich habe keine Webseite bei der ich mich jetzt akut kümmern müsste, jedoch möchte ich mich im Vorfeld ein wenig informieren.

    vor ca einem Jahr
  • milkstyle: Javascripts, Bilder, und CSS sind alles Dinge die auf dem Server Abfragen erzeugen und ausgeliefert werden müssen. Im Prinzip brauchen diese zwar wenig Rechenleistung, belegen aber Kommunikationskanaäle vom Server zum Client und verlängern den Zugriff auf die Webseite.
    Minimalisierung von CSS, Javascirpt und Images kann bis zu 80% der eigentlichen Dateigröße sparen. Auch sollte man diese komprimiert durch den Server senden lassen, was wieder Rechenleistung kostet. Bei richtig großen Projekten lohnt es sich da wirklich auf CDNS zurückzugreifen.
    Jede Datei die nicht ausgeliefert werden muss spart schließlich wieder Last.

    vor ca einem Jahr

Melde dich an, um einen Kommentar zu schreiben.

2 Punkte

von rbq.  Nerd  vor ca einem Jahr

> Wie kann ich bei größeren Projekten die Last der Server am besten verteilen?

Man kann im DNS mehrere IPs für einen Hostnamen angeben, dann sollten die Anfragen mehr oder weniger über eine Anzahl von Rechnern verteilt werden. Kontrollierbarer wird es mit einem Reverse Proxy, der die Anfrage entgegen nimmt und als Load-Balancer auf mehrere Webserver verteilt. Je nach Situation kann man außerdem generierte Inhalte vom selben oder einem anderen Proxy cachen lassen oder die CPU-lastigen SSL-Verbindungen abwickeln, so dass die Webserver dahinter sich nicht mehr darum kümmern müssen. HAProxy und Varnish sind Werkzeuge, die man sich z. B. mal ansehen kann.

> Zum einen bietet sich ja MySQL-Master und Slave Server an, wo Schreibzugriffe auf den Master geschehen und lesezugriffe nur von einem der Slaves.

Das ist ein anderes Thema, aber stimmt schon. Wenn MySQL der Engpass ist, muss man dort aufstocken. Das kann aber auch erstmal nur durch einen dickeren Rechner passieren, der z. B. in der Lage ist, die DB im RAM zu halten. Einer, der die Anfrage sofort beantworten kann, ist eventuell besser als zwei, die beide auf der Platte rumrödeln müssen.

> In die Cloud würde ich ungerne gehen.

Wieder ein ganz, ganz anderes Thema. Ob man seine Infrastruktur irgendwo mietet oder sich in den Keller stellt, läuft in Sachen Skalierung so ziemlich auf das selbe heraus. Nur, dass man bei Mietlösungen flexibler ist und leichter mal experimentieren kann.

Nachträglich bearbeitet am 02.08.10 16:13

0 Punkte

von no5251  Geek  vor ca einem Jahr

Eh, du wirfst da einige Sachen durcheinander. So wie sich das für mich liest, solltest du erst einmal in Erfahrung bringen wo der Engpass ist.

Selbst bei mittelgroßen Seiten lässt sich meist durch eine Optimierung der Quelltexte und Ausgaben die Last etwas drücken. Mit z.B. “tuning-primer.sh” kann die Datenbank-Konfiguration überprüft werden. Und “apachetop” zeigt häufig aufgerufene Inhalte an, welche evtl. mit besseren Header-Informationen ausgestattet werden können.

Kommentare

  • dpde: Es gibt keine Engpässe da die Anwendung noch nicht online ist.
    Ich möchte mich nur vor dem go live mit allen erdenklichen Themen befassen und vorbereitet sein.

    vor ca einem Jahr

Melde dich an, um einen Kommentar zu schreiben.

0 Punkte

von no5251  Geek  vor ca einem Jahr

Dann simuliere doch die Zugriffe.

Kommentare

  • dpde: Darum ging es mir nicht.
    Ich würde gerne wissen, was es generell für Möglichkeiten der Lastverteilung gibt.

    vor ca einem Jahr

Melde dich an, um einen Kommentar zu schreiben.

0 Punkte

von no5251  Geek  vor ca einem Jahr

Datenoptimierung != Lastverteilung

Und die Eingabe von “Lastverteilung” und/oder “Load Balancing” in der Suchmaschine deiner Wahl fördert ausreichend grundlegendes Informationsmaterial zu Tage.

Und nochmal, SIMULIERE doch einfach ein paar 100 Zugriffe pro Sekunde und du wirst schnell sehen, ob du einen Cluster oder schlicht etwas Optimierung benötigst.

Nachträglich bearbeitet am 26.07.10 09:41

Antwort schreiben

Um eine Antwort schreiben zu können, sollest du dich zuvor anmelden.

Zur Anmeldung