Ein paar Worte zur Performance

Hallo Leute,

die meisten, besonders die tagsüber-User, haben es schon gemerkt, wir haben aktuell einen harten Kampf mit der Last der GWFW auf dem Server.
Wir sehen jeden Tag mindestens ein zwei Threads zur Problematik und deswegen diese etwas offiziellere Erkärung.

Ich versuche kurz die Problematik zusammenzufassen, damit ihr über die Prozesse im Bilde seid.

Das Fanworld Board ist kein kleines Forum, wie man an der Zahl der Benutzer und vor allem an den Themen und Beiträgen erkennen kann. Leider ist das Invision Board auch keine kleine Software, so dass hier zwei Komponenten unglücklich zusammen kommen.

Aktuell ist es so, dass der Server an seiner Hauptspeicherobergrenze fährt sobald der Webserver gestartet wird. Wenn Last erzeugt wird, also viele Anfragen rein kommen und das Board, der Webserver und die Datenbank arbeiten, dann wird mehr Speicher gebraucht. Im Normalfall leider mehr, als der Server physikalisch zur Verfügung hat. In dem Fall wird angefangen Speicher auf die Festplatte auszulagern, also es wird virtueller Arbeitsspeicher benutzt. Da die Festplatte aber wesentlich langsamer ist und bei vielen Anfragen viele Prozesse existieren, die alle arbeiten wollen, entsteht ein reger Austausch zwischen physikalischem und virtuellem Speicher, dauert alles etwas länger. Da nun die Festplatte neben den normalen Operationen (Logfiles schreiben, Bilder und Dateien für die Darstellung lesen) auch noch andere Sachen macht, muss der Lesekopf sehr oft die Positionen wechseln, wodrunter wieder einmal die Performance leidet.

Große Server haben zum einen mehr Hauptspeicher, wodurch wesentlich weniger virtueller Speicher benötigt wird, und bessere Plattensysteme, die schnellere Zugriffe erlauben. Das kostet leider viel Geld, was nicht da ist.

In der Vergangenheit wurde das Thema mehrfach angegangen, indem die Datenbank von alten Postings und Beiträgen gereinigt wurde, wodurch die Datenzugriffe beschleunigt wurden. Das war oft ärgerlich, weil eben Daten verloren gehen. Diesen Weg wollen wir nicht gehen. Zumal das keine Dauerlösung ist.

Wir haben bereits schon viele Optimierungen erreichen können (auch in Zusammenarbeit mit Invision), so dass wir auf dem Wege der Besserung sind. Allerdings wissen wir immer noch nicht, wie wir hier alles performanter bekommen, ohne die gewohnte Funktionalität einzuschränken.

Seid Euch aber sicher, wir arbeiten daran! Habt allerdings etwas Nachsicht mit uns, wir tun das alles nämlich in unserer Freizeit (wie man unschwer an der Uhrzeit erkennen kann 😉)

Ich hoffe wir konnten damit ein wenig Aufklärung leisten!

FAZIT: Wir sind uns der Problematik bewusst und wollen diesen Zustand auf jeden Fall verbessern!

Danke fürs zuhören, ihr könnt weiterarbeiten 😛
 
isch han da mal ne fraaaach:


ich hab die letzten tage extreme probleme mit der "neueste beiträge" funktion.

ich sehe definitiv neue beiträge, aber die funktion sagt, dass die abgfrage ergebnislos verlief. ist da nur das zeitfenster für die beantwortung der abfrage viel zu klein, und das wird dann so interpretiert, oder wie läuft das ganze? mal abgeschaltet, mal an, nur nmit viel zu wenig neuen threads?


ich mein da muss die datenbank kräftig ackern
 
<div class='quotetop'>ZITAT(Mortalitas @ 21.10.2007 - 09:18 ) <{POST_SNAPBACK}></div>
isch han da mal ne fraaaach:


ich hab die letzten tage extreme probleme mit der "neueste beiträge" funktion.

ich sehe definitiv neue beiträge, aber die funktion sagt, dass die abgfrage ergebnislos verlief. ist da nur das zeitfenster für die beantwortung der abfrage viel zu klein, und das wird dann so interpretiert, oder wie läuft das ganze? mal abgeschaltet, mal an, nur nmit viel zu wenig neuen threads?


ich mein da muss die datenbank kräftig ackern[/b]

Bist Du jeden Tag hier?
 
Einige wissen ja Bescheid, was ich mache wenn ich nicht gerade auf GWFW poste, und ohne altklug wirken zu wollen denke ich dass ich zum Thema einiges Sinnvolles Beitragen könnte. 😉

Also, erst mal möchte ich ein paar technische Missverständnisse ausräumen:
Die Anzahl und das Volumen an Daten, welche in der Datenbank gespeichert sind - also User, Beiträgem Threads etc. - ist für die Performance des Servers und der Forensoftware völlig unerheblich. Die Löschung von 100.000 Postings würde absolut nichts an den Performance-Problemen des Forums ändern. Abgespeicherte Daten belasten den Server nicht. Die Last wird einzig und allein dadurch erzeugt, dass viele Benutzer gleichzeitig eingeloggt sind: Um die Seiten aufzubauen und auszusenden muss der Server ziemlich viel arbeiten, und sobald eine kritische Anzahl an Benutzern, die gleichzeitig online sind, erreich ist, ist schlichtweg der Arbeistspeicher voll und die Festplatte überfordert. Deswegen geht meine erste Einschätzung gleich mal in Richtung firegate666 und Terra:
Ein Wechsel der Software wird euch nix bringen, und auch die ständigen Optimierungen an Datenbank und Forenfeatures sind nur Symptombekämpfung. Das Invisionboard ist eine ziemlich ausgereifte Software und die anderen kochen auch nur mit Wasser. Natürlich kann man durch den einen oder anderen Tweak etwas Leistung wettmachen, aber das löst das Problem nicht, und das sind die Leistungsmerkmale eures Servers. Mit 512 MB RAM ist eine Communit dieser Größe auf keinen Fall zu betreiben, nicht mal kurzfristig, geschweige denn mittelfristig. Die Anzahl der gleichzeitig zugreifenden User wird ja in Zukunft nicht weniger werden, sondern eher mehr. Ein Serverwechsel ist meines Erachtens nach die einzige Lösung. Und dabei sollte man nicht den Fehler machen, sich mit nur 1 GB RAM und einem total sinnlosen und langsamen RAID1-Array abspeisen zu lassen. Für ca. 50€ pro Monat bekommt man heute schon deutlich Sinnvolleres. 😉

Falls ihr Interesse an ein paar Erfahrungsberichten und Tipps meinerseits habt, kann ich gerne behilflich sein. Ich mach diese Sache mit großen Foren auf dedizierten Servern ja nicht erst seit gestern. 😉
 
<div class='quotetop'>ZITAT(Odysseus @ 21.10.2007 - 11:34 ) <{POST_SNAPBACK}></div>
Einige wissen ja Bescheid, was ich mache wenn ich nicht gerade auf GWFW poste, und ohne altklug wirken zu wollen denke ich dass ich zum Thema einiges Sinnvolles Beitragen könnte. 😉[/b]

<div class='quotetop'>ZITAT</div>
Also, erst mal möchte ich ein paar technische Missverständnisse ausräumen:
Die Anzahl und das Volumen an Daten, welche in der Datenbank gespeichert sind - also User, Beiträgem Threads etc. - ist für die Performance des Servers und der Forensoftware völlig unerheblich.[/b]

Ohne altklug zu wirken sage ich mal, Du hast da wohl etwas übersehen. Die Menge in der Datenbank ist beim Abruf durchaus von Belang, wenn es um einschränkende Abfragen. Ist die Datenbank nicht optimiert Indices richtig zu benutzen, ist es durchaus ein Unterschied, ob Du 100 oder 100.000 Einträge in einer Datenbank hast.

<div class='quotetop'>ZITAT</div>
Die Last wird einzig und allein dadurch erzeugt, dass viele Benutzer gleichzeitig eingeloggt sind: Um die Seiten aufzubauen und auszusenden muss der Server ziemlich viel arbeiten, und sobald eine kritische Anzahl an Benutzern, die gleichzeitig online sind, erreich ist, ist schlichtweg der Arbeistspeicher voll und die Festplatte überfordert.[/b]

Genau. Richtig problematisch wird dies jedoch erst, wenn die einzelnen Abfragen zudem auch noch lange brauchen. Anfragen, die nur eine kurze Bearbeitungszeit haben, sind nämlich ebenso schnell wieder weg von der Last.

<div class='quotetop'>ZITAT</div>
Ein Wechsel der Software wird euch nix bringen, und auch die ständigen Optimierungen an Datenbank und Forenfeatures sind nur Symptombekämpfung. Das Invisionboard ist eine ziemlich ausgereifte Software und die anderen kochen auch nur mit Wasser.[/b]

Schau Dich mal ein wenig um. Erfahrungsberichte vieler anderer Forenbetreiber bestätigen, dass das Invisionboard bekannt dafür ist, mal etwas länger zu brauchen.

<div class='quotetop'>ZITAT</div>
Ein Serverwechsel ist meines Erachtens nach die einzige Lösung. Und dabei sollte man nicht den Fehler machen, sich mit nur 1 GB RAM und einem total sinnlosen und langsamen RAID1-Array abspeisen zu lassen. Für ca. 50€ pro Monat bekommt man heute schon deutlich Sinnvolleres. 😉[/b]

Wo? Wo bekommst Du für 50 Euro im Monat ein RAID System, dass nicht nur stripped ist, sondern auch noch andere Vorteile der Technik nutzt, wo der Server mehr als 1 GB RAM hat, der Prozessor brauchbar ist UND ne Menge Traffic inklusive ist?

<div class='quotetop'>ZITAT</div>
Falls ihr Interesse an ein paar Erfahrungsberichten und Tipps meinerseits habt, kann ich gerne behilflich sein. Ich mach diese Sache mit großen Foren auf dedizierten Servern ja nicht erst seit gestern. 😉[/b]

Tipps und Erfahrungsberichte sind immer gerne gesehen, und das nicht nur weil ich Informatik studiert habe und beruflich auf diesem Sektor tätig bin 😉
 
Ach ja ! @Odysseus, da Du ja in dem Them firm bist:

Die größte Misere der aktuellen Lage ist, dass wir in der aktuellen Konfiguration den Apache nur im Prefork Modus betreiben können. Da dieser nicht Thread basiert ist, sondern Child Prozesse erzeugt, belegen wir dadurch wesentlich mehr Speicher, als wir müssten.
Es ist möglich, den Apache so zu konfigurieren, dass er im Worker Modus arbeitet. Dann werden statt Child Prozesse Threads erzeugt, die wegen Shared Memory eben weniger RAM ziehen. Dummerweise ist der Worker Threadsafe, weswegen er nicht mit dem PHP Modul zusammenarbeiten kann. Glücklicherweise kann man, wenn man PHP selber kompiliert, eine experiementelle Erweiterung einbinden, die dieses Problem löst ! Allerdings habe ich keine Ahnung, ob wir uns damit an einer anderen Stelle Probleme einfangen. Vielleicht hast Du Dich ja mal damit beschäftigt?
 
Gerade gab's wieder ein Lag...

Also, wegen der Datenmenge:
Es ist richtig, dass mehr Daten tendenziell mehr Last bedeuten. Allerdings sollte eine ausgereifte Software wie das IPB durchaus sinnvolle Indizes benutzen. Außerdem, selbst wenn man 100.000 Postings löscht, bleibt die Größenordnung der Datenmenge gleich. Der Unterschied zwischen 100.000 Beiträgen und 900.000 ist technisch praktisch nicht vorhanden, es ist der Rahmen 10^6.

Wegen IPB:
Mag sein, dass es da entsprechende Erfahrungswerte gibt, aber glaube mir - das haben wir im vBulletin Lager auch manchmal. 😉 Und die Woltlab-Leute sicher auch. Wenn ich mir die aktuelle Situation ansehe, ist das folgendes: Eine recht ausgereifte Software und ein sehr unterdimensionierter Server. Daher bin ich der Überzeugung, dass man eher am Server als an der Software ansetzen müsste.

Zur Hardware:
Ich selbst hoste bei hetzner.de. Da würdest du momenten für 49€ einen Athlon 64 Server mit 1 GB RAM und zwei SATA-Platten bekommen. 10€ mehr und es sind 2 GB RAM. Traffic ist nicht limitiert, aber nach 1000 GB wird auf der 100MBit Leitung eine 10MBit Leitung, aber so viel Traffic um das zu erreichen wird hier eh nicht erzeugt.
Mehr RAM bedeutet, dass mehrere Usersession gleichzeitig existieren können, ohne den SWAP nutzen zu müssen. Aber genau die SWAP Nutzung bringt ja die eigentlichen Probleme! Außerdem ermöglicht es den Einsatz eines größeren MySQL Query Caches und mehr Platz für einen PHP-Cache.
Um die Leistung der Platten voll auszunutzen, verwendet ich übrigens die eine Platte als MySQL Data-Partition. Damit verteilt man die Plattenlast auf zwei physische Platten. Der Vorteil ist denke ich evident. RAID-1 hingegen bringt lediglich mehr Ausfallsicherheit, aber keinen Geschwindigkeitsvorteil. Hetzner ist meines Wissens nach der einzige Hoster, bei dem man die zwei verbauten Platten so einrichten kann wie man will, sprich also ohne Raid-Konfiguration. Die Datensicherheit gewährleistet man einfach durch Querspiegelung der jeweils relevanten Daten auf die jeweils andere Platte.
Allerdings hat Hetzner angekündigt, dass es ab kommenden Freitag eine neue Server-Generation geben wird. Vermutlich bekommt man dann sogar noch mehr Leistung zum gleichen oder geringeren Preis. 😀

Wegen Apache:
Och, Prefork mit mod_php ist schon OK. Hab ich auch so im Einsatz. Wichtig hierbei ist halt, dass man die Thread-Spawning-Konfigurationen entsprechend getweakt hat. Damit kann man evtl. noch was verbessern, aber wirklich gut kenne ich mich damit nicht aus. In Sachen Performance stellt sich mir auch noch die Frage, ob ihr hier den MySQL Query Cache aktiviert habt, und ob es einen PHP-Beschleuniger gibt. Ich setze seit ein paar Tagen xcache ein und bin absolut begeistert.