[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