[TYPO3-german] Extbase = Speicherhunger?
Christian Zenker
christian.zenker at 599media.de
Fri Mar 4 15:35:10 CET 2011
Hallo Yvon.
> Extbase = Speicherhunger?
Ja. by design(TM). :)
Natürlich wird mehr Speicher benötigt, wenn du nicht einfach nur
Datenbankfelder auf ein Array abbildest, sondern in Objekte mit Methoden
steckst, sie in einem Repository verwaltest, auf Änderungen hin überwachst
und entsprechend in der Datenbank updatest, sollte es nötig sein. Auch die
Schachtelung verschiedener Aufgaben in verschiedene Klassen führt zu einem
erhöhten Speicherhunger. Dieses "Problem" hat aber jedes moderne PHP
Framework. Und in der Regel wiegen die Vorteile einer solchen Architektur
ihre Nachteile auf.
> Trotzdem beobachte ich bei ein oder zwei größeren Objekten (die über
> mehrere Tabellen gehen) eine ziemlich hohe Auslastung des Apache
> Prozesses. Auch die Verarbeitung der Daten geht zäh voran.
Hast du konkrete Zahlen dazu? Wie gesagt, dass Extbase etwas (!) lahmer
ist als das alte pibase ist nicht ungewöhnlich.
> Gibt es Erfahrungen / Möglichkeiten Typo3, bzw. Extbase zu
> beschleunigen? Wir setzen Typo3 4.4.4 ein.
- TYPO3 Cache - immer wieder gern genommen. Mich stört es nicht so sehr,
wenn eine Seite bei der Generierung 2 Sekunden statt einer dauert, wenn
die nächsten 100 Besucher dann auf die Seite im Cache zugreifen können.
- bei Fluid solltest du aufpassen, dass du die ViewHelper nicht zu sehr
schachtelst. Um rauszufinden, ob Fluid bei dir die Bremse ist, kann ich
dir die Fluid Debugging ViewHelper[1] empfehlen. Mit denen kannst du
einzelne Teile des Template-Renderings im Admin Panel tracken und schauen,
welche Teile besonders langsam sind. Außerdem kannst du den
Speicherverbrauch an verschiedenen Stellen beobachten. Die Zahlen sind
allerdings auch mit Vorsicht zu geniesen, da Extbase möglicherweise Daten
per LazyLoading nachlädt.
- in Extbase selbst ist vermutlich der PersistanceManager (persistAll())
die größte Bremse, da er alle geladenen Objekte auf Änderungen hin
überprüft. Bei dem ist es nicht ungewöhnlich, wenn er eine halbe Sekunde
braucht nur um festzustellen, dass er nichts machen muss. Prinzipiell
solltest du daher darauf achten auch nur die Objekte aus der Datenbank zu
holen, die du benötigst.
Das sind erstmal die Sachen, die mir spontan einfallen.
Sonst hilft dir vielleicht ein Profiling oder ein selbstgebastelter
TimeTracker weiter.
Viele Grüße
Christian.
[1] https://github.com/czenker/fluid_debug
More information about the TYPO3-german
mailing list