[So geht es nicht weiter]
Die derzeitige Situation macht mir Angst. Die momentanen Zugriffszahlen sind zwar die höchsten in der Geschichte des
Schockwellenreiters, aber noch keine Zugriffszahlen, bei denen man von einer wirklichen Masse reden kann: 15.000 PageViews pro Tag sind doch eigentlich noch nichts. (OK, da kommen noch mehrere zehntausende von Zugriffen auf den RSS-Feed hinzu und auch die ganzen Roboter (sicher auch noch einmal mehrere zehntausend Zugriffe) werden von
Sitemeter nicht gezählt. Trotzdem... mein täglicher Sitemeter sollte nicht aussehen wie eine Achterbahn.)
Ich kann nicht ständig vor dem Server sitzen und schauen, ob mein
Zope noch läuft. Gut, unser
Serverchen ist ein wenig schwachbrüstig mit Hauptspeicher ausgestattet und auch sonst schon etwas ältlich. Aber ähnliche Probleme tauchen auch
hier und
hier (bis vor wenigen Wochen noch eine
Frontier-Applikation) auf. Später zwar (die Server haben jeweils mindestens 2 GB RAM), aber sie tauchen auf. Und daher kommen mir erhebliche Bedenken, ob die Entscheidung,
dieses Projekt in Zope zu realisieren, eine gute Entscheidung war. Leider ist es zu spät, dies noch zu ändern und das läßt mich langsam nicht mehr ruhig schlafen. Ich habe mittlerweile schwerwiegende Zweifel an der Eignung von Zope (und damit auch
Plone), Sites mit »höherem« Traffic zu bewältigen.
Ich werde mir in den nächsten Tagen grundlegende Gedanken über die Architektur von Web-Applikationen (statisch vs. dynamisch vs. Kombination von beiden, aber auch "Was gehört auf den Client?" vs. "Was gehört auf den Server?" machen und diese dann hier veröffentlichen.
Und eine irgendwie geartete Änderung, die wieder ein stabileres Verhalten des
Schockwellenreiters garantiert, wird es in absehbarer Zeit auch geben. Ich weiß aber noch nicht, welche. Ich halte Euch auf dem Laufenden.
hi joerg,
kann es sein, dass du keinerlei form von caching einsetzt? es muss ja nicht gleich ein squid sein, aber alleine schon die entsprechenden header in den entsprechende zope templates zu setzen bringt schon enorm viel! [1]
die naechste variante waere das caching dem apache zu ueberlassen, siehe auch hier [2].
wenn das immer noch nicht reicht, kannst du anfangen, dir nen zeo-cluster zu basteln.
ich habe die erfahrung gemacht, das zope/plone sehr gut skaliert - man muss nur frueher anfangen, entsprechende massnahmen zu ergreifen, als bei den meisten anderen systemen ;-)
bei der datenschleuder haben wir z.b. 500 req/sek.
beste gruesse,
tom
[1] http://tomster.org/blog/207
[2] http://tomster.org/blog/63
@tom: Mein Problem ist nicht Plone (das läuft nur nebenher mit), mein Problem ist Zope (COREBlog für den Schockwellenreiter, Zope pur mit ZPT/TAL für die anderen angesprochenen Projekte).
> Architektur von Web-Applikationen (status vs. dynamisch
status? Oder statisch ?
Hi,
ich habe mir gerade mal den Output von http://blog.schockwellenreiter.de angeschaut. Das sind im Augenblick etwas über 300kB, davon allein 126kB für die base page, die in knapp 1,3 Sekunden von CoreBlog/Zope erzeugt wird!
Der Rest sind ca. weitere 30 Objekte, z.B. adcell und gifs. Das ist natürlich nicht gerade stromlinienförmig.
Mit den 15.000 pageviews komme ich so im Durchschnitt auf ca. 5 hits/s, was ja so schlimm erstmal nicht ist.
Wo liegen denn die ganzen Bilder? In normalen Zope-Folder? Wieviel Elemente haben die denn inzwischen? Vermutlich wäre allein dafür, wie tom schon sagt, ein vorgelagerter Cache [apache] sinnvoll.
Oder der apache liefert die Bilder direkt aus, und der Filesystem Bereich wird in den Zope space gemapped?
Auf was für eine HW/SW Combo läuft denn die Site?
Ich mir ziemlich sicher, daß auch das momentane Aufkommen mit etwas Optimierung "problemlos" abgehandelt werden kann.
Ciao,
dev
Dei Bilder liegen im Filesystem und nicht in Zope, der Server ist eine Linux-Machine mit einem Apache und leider nur 256 MB RAM (gehostet bei 1&1).
dann ist Zope vermutlich nicht das ursächliche Problem. Denn die base page kommt wie gesagt nach ca. 1,3 Sekunden, und das ist, für a) dynamisch erzeugt und b) bei der Seitengröße eigentlich akzeptabel.
Wie sieht es denn auf der Maschine aus? Was sagt denn top?
Ciao,
dev
Ich kenne mich da nicht so wirklich aus, aber top sagt, daß "python" (also Zope) so ziemlich alle Ressourcen frisst.
@joerg: das mit den cache-headern ist nicht wirklich plone-spezifisch (auch wenn mein verlinkter blogeintrag plonespezifisch ist, mea culpa)
das dein zope-prozess so hoch ausschlaegt deutet darauf hin, dass er "zu" beschaeftigt ist und dass du keine, oder unguenstige cache-header setzt. (wenn ich nicht gerade auf die kinder aufpassen wuerde, koennte ich mal selbst bei dir nachgucken ;-) vielleicht spaeter heute abend...)
Ich hab mal einiges von dem was sich bei mir im Laufe der Jahre an Know-How zum Zope-Hosting angesammelt hat aufgeschrieben:
Zope Hosting und Performance
Hilft ja vielleicht dem einen oder anderen bei ähnlichen Problemen. Und Jörg könnte sicherlich das eine oder andre daraus auch probieren.
Selber Schuld wenn man sich mit dem Teufel einlässt ;)
256 MB sind auch ein wenig wenig! Zope frißt gerne Resourcen und vor allem Speicher ist schnell gefressen. Also, ich habe zwar auf den von mir am Leben gehaltenen Zope-Seiten keine 15.000 Hits aber die laufen auf Servern mit mind. 2 Gig RAM. U nd ein cron-gejobter gelegentlicher Restart wirkt auch Wunder, wenn Zope sich schnell vertschüsst.
Sonst haben die Vorredner schon sehr viel sinnvolles von sich gegeben (Cache, Apache, Squid, Pound, ZEO).
Hi,
die Problem mit Zope sind mir wohl bekannt. Allerdings sind es nicht reine Zopeprobleme. Das meiste tritt mit jedem AppServer sicher genauso auf. Man muß sich sehr genau überlegen, ob und was man tatsächlich immer aktuell und dynamisch braucht. Typerwischerweise stellt man dann fest, dass das sehr wenig ist.
So viel ich weiß arbeiten z.B. ebay und Amazon mit einer Mischung aus statisch und dynamisch.
Bei ebay kann man das gut beobachten. Die Artikellisten sind nie ganz aktuell. Die tatsächliche Anzahl von Geboten sieht man erst in der Detailansicht eines Artikels.
Auf den Schockwellenreiter bezogen bedeutet das, dass bestimmt mehr als 95% des gesamten Contents statisch sind und somit vom Indianer wesentlich schneller under resourcensparender bedient werden könnten.
Du bräuchtest also einfach ein Script, dass dir immer statische Seiten aus dem ZopeConetent macht. Ein paar RewriteRules für den Indianer erledigen dann den Rest.
Meines Erachtens ist dies eine Funktionalität die man wirklich mal in Zope integrieren müßte.
Viele Grüße
Lutz
There is no trackback.
Liebe Kommentar-Spammer: Werbung kostet € 1.500 pro Link pro Monat (zuzügl. der jeweils gültigen Mehrwertsteuer).