PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : LoadBalancer und "Wer ist Online" anzeige falsch


Demux
24.06.2007, 00:44
Hallo,

ich betreibe mehrere webserver mit einem forum. Die webserver werden über einen LoadBalancer mit anfragen versorgt. Jeder webserver ist mir dem foren-datenbankserver verknüpft. Ein User "sieht" nicht, auf welchen server er gerade ist. Die server werden dynamisch verteilt, und ggf. weggeschaltet.

Mein problem ist folgendes:

Wenn z.b. user A auf webserver 1 zugreift ,sieht er folgendes:
Zurzeit aktive Benutzer: 62342 (Registrierte Benutzer: 6526, Gäste: 55816)

Wenn user B auf server 24 zugreift sieht er das (der server ist gerade für 1 minute online):
Zurzeit aktive Benutzer: 512 (Registrierte Benutzer: 13, Gäste: 499)

Es scheint also, das diese statistik nur für den webserver gilt, wo der user gerade online ist. Das ist natürlich für eine webfarm eher schlecht.

Wie bekomme ich es hin, das jeder server immer die aktuellen daten (also die wirklich echten user im forum) anzeigt!?

pogo
25.06.2007, 12:32
Der Wert wird in der index.php unter

// ### LOGGED IN USERS #################################################

aus der Datenbank ausgelesen.

Ich verstehe daher nicht, wie die Werte überhaupt unterschiedlich sein können, wenn bei beiden Aufrufen aus derselben Tabelle gelesen wird.

Mystics
25.06.2007, 15:26
Es gibt also nur einen Datenbankserver? Ansonsten hätte ich gesagt, dass bei dem einen Datenbankserver die Einträge in der Tabelle sessions nicht gelöscht werden.

Demux
25.06.2007, 15:54
Es scheint, dass ein apache restart die tabelle löscht. Wenn ich z.b. alle apache stoppe, und dann neu starte sind alle user im forum auf "0". Warum ist das so? Die tabelle müsste doch alle noch dabei haben. Oder liegt das daran, dass die user neue sessions bekommen, und quasi "neu" sind?

pogo
25.06.2007, 16:05
"Es scheint so" oder "Es ist definitiv so"?

Dann hast du glück, dass eine Apacheneustart nicht gleich die ganze Datenbank löscht. ;)

Im Ernst, die sessions Tabelle wird zwar nur im Hauptspeicher gehalten und nicht auf der Festplatte gespeichert, aber ein Apacheneustart kann nicht den Hauptspeicher des Datenbankservers beeinflussen. Es sei denn, dass das Apachestartskript auch gleich den MySQL-Server neu startet.