Mailinglisten-Archive |
> Wie performant ist das phpChat an dem du arbeitest? > es nimmt auch einträge in der Datenbank für jede gechattete Zeile vor.. > wie viele Benutzer können gleichzeitig darin chatten? > Wann kracht das ganze system vor Überlastung zusammen? > Hast du schon erfahrungen mit konkreten Zahlen gemacht`? Ich gehe jetzt einmal davon aus, daß PHP4 läuft und Shared Memory unterstützt wird. phpChat nimmt in dem Fall praktisch keine CPU-Zeit in Anspruch, da hier solange sleep() aufgerufen wird, bis das Inputfeld signalisiert, daß eine neue Nachricht auszugeben ist. Daraufhin bricht der Prozeß aus seiner Idleschleife aus und stellt dann erst eine Datenbankabfrage, d.h. es tritt tatsächlich nur bei Bedarf Datenbanktraffic auf. Andersherum verhält es sich genauso, solange keine Nachrichten von anderen Usern (also aus dem Chatnetzwerk) darzustellen sind, bleibt der Prozeß in einem sleep(). Bleiben für eine bestimmte Zeit externe Nachrichten aus, wird ab und zu eine Art "Ping" an den Browser versandt, um Timeouts auf der Clientseite zu vermeiden. Sowohl httpd und MySQL-Prozesse werden in top mit 0% bis max. 1% (in Extremfällen) CPU-Beanspruchung angezeigt. (Konfiguration s.u.) Probleme macht hauptsächlich ein nicht ganz fehlerfreies PHP: ab und zu startet PHP Prozesse, die volle CPU-Belastung ziehen - dies war vor allen Dingen mit PHP 3 der Fall, ist jedoch in PHP 4 weitestgehend behoben. Bei der jetzigen Installation ist mir bis jetzt noch kein wildgewordener Prozeß wieder unter die Finger gekommen. Die Apacheprozesse sind jedoch recht groß, pro Client wird ein Prozeß, also ca. 1-2MB an RAM benötigt. Je nach freien Systemressourcen variiert also die mögliche Anzahl von Clients. Auf dem Testserver, ein PIII mit 128MB, Linux (jedoch mit nicht allzuviel freiem Speicher), waren ca. 25 Clients möglich, bis der Server anfing aus dem Swap zu fahren und langsam abstarb. Ich denke mal, pro zusätzlichem 128MB-Riegel sind mindestens 50 Clients problemlos drin, eine maximale Useranzahl gibt es nicht. Hochfrequentierte IRC-Server halten locker 2000-3000 User aus, steckt man da 5GB RAM in den Server, ist der Betrieb von phpChat kein Problem. Der Vorteil von phpChat liegt in der Skalierbarkeit, denn nur lokale Clients benötigen lokalen Speicher. Während der Laufzeit können dynamisch weitere Server hinzugebunden werden, ohne die anderen Server neu zu starten o.ä. Clients, die von den anderen Servern behandelt werden, werden transparent auch auf jedem anderen Server gespiegelt (einer der Vorteile von IRC). Diese externen Clients benötigen weder Rechenzeit noch Speicherplatz, womit quasi ganze Netzwerkstränge nach Gusto "gemountet" werden können, ohne Nachteile am eigenen Server in Kauf nehmen zu müssen. (N.B.: Wann gibts die Usergruppe "phpChat-Net"? :) ) Ohne Shared Memory muß phpChat immer wieder die Datenbank anhauen, um nachzuschauen, ob neue Nachrichten da sind. Dies geschieht in predefinierten Zeitintervallen, je größer man den Zeitintervall einstellt, desto weniger Ressourcen verbraucht phpChat (sowohl im httpd-Prozeß als auch in Folge im MySQL-Prozeß), jedoch desto langsamer erfolgt auch die Ausgabe. Ich habe mittlerweile allerdings ein Pluginsystem fertiggestellt, mit dem man komplett seine eigenen Module für phpChat schreiben kann, nicht nur für interne Erweiterungen sondern auch für den Datenbanksupport. Wer also möchte, kann sein phpChat auf das Dateisystem umbiegen, ganz im Speicher arbeiten lassen oder wo auch immer (diese Module muß man sich dann allerdings zum derzeitigen Zeitpunkt noch selber schreiben) Ich hoffe, damit alle Fragen beantwortet zu haben, ansonsten bitte nochmal nachhaken. :) Till
php::bar PHP Wiki - Listenarchive