Die Systemlast beherrschen

Ein CMS ist ein komplexes System, das mehrere Aufgaben gleichzeitig erfüllt. Anders als beispielsweise ein E-Mail-Server, dessen einzige Aufgabe darin besteht, E-Mail-Nachrichten von Absendern entgegenzunehmen und an die Empfänger weiterzuleiten, bedient CMS Fiona zahlreiche Redakteure, exportiert im Hintergrund die Inhalte, versorgt seine Suchmaschine mit aktuellen Daten und liefert (möglicherweise dynamisch erzeugte) Inhalte an die Website-Besucher aus – um nur die wichtigsten Aufgaben zu nennen.

Je nachdem, in welchem Umfang diese Aufgaben anfallen, und in welchem Maße sich deren Ausführung überschneidet, wird das zugrundeliegende Rechnersystem mehr oder weniger stark belastet. Im laufenden Betrieb des CMS beansprucht jede dieser Aufgaben eine unterschiedliche und sich im Verlauf ihrer Ausführung ändernde Mischung der verfügbaren Ressourcen.

Engpässe entstehen dann, wenn eine Ressource (RAM, Prozessorleistung, Datendurchsatz) nicht in der Menge verfügbar ist, die benötigt wird, um die anstehenden Aufgaben in dem gewünschten Zeitraum erledigen zu können. Diese Aussage mag trivial klingen, die fehlenden Ressourcen zu ermitteln und für Abhilfe zu sorgen, ist jedoch keineswegs trivial. Die folgenden Abschnitte sollen Ihnen dabei helfen.

Redaktionelle Arbeit

Die redaktionelle Arbeit mit dem CMS, d.h. die Arbeit mit dem Content-Navigator, erzeugt normalerweise und im Vergleich beispielsweise zum Export oder zur Indizierung größerer Datenmengen keine erhebliche Last auf dem System. Vor allem lässt sich die Last nicht allein aus der Anzahl der gleichzeitig mit dem System arbeitenden Redakteure bestimmen. Vielmehr kommt es darauf an, welche Arbeiten die Redakteure durchführen und wie sie den Content Navigator verwenden:

  • Beim Upload großer oder vieler Dokumente müssen große Datenmengen über das GUI zum Content Manager übertragen, von ihm verarbeitet und gespeichert werden. Hierbei entsteht hohe Netzlast und großer Speicherbedarf.
  • Bei der Verwendung der Baumansicht mit vielen gleichzeitig geöffneten Ordnern und dadurch vielen anzuzeigenden Dateien (mehr als 500) werden viele Dateiinformationen ermittelt und übertragen. Für jede Datei in der Hierarchie fordert das GUI ihren Namen und etliche Statusinformationen (u.a. Typ der Datei, Versionsinformationen, Status) vom Content Manager an, damit sie in der Hierarchie sichtbar gemacht werden können. Die Abfrage dieser Daten beansprucht die Datenbank, was je nach deren Anbindung viel Speicher oder Netzwerkbandbreite kostet. Die Übertragung dieser Daten vom Content Management Server zum GUI sowie vom GUI zum Client-Rechner erfordert ebenfalls Netzwerkbandbreite.
  • Die intensive Verwendung der Vorschau, wenn in den Layouts (Templates) viele Berechnungen durchgeführt werden. Jede Vorschau ist ein Export einer Datei, der umso mehr Rechenleistung erfordert je komplexer die Layouts aufgebaut sind.

Export

Der Export ist ein Vorgang, bei dem Daten aus zahlreichen Quellen verarbeitet werden, um das Ergebnis – in der Regel ein Webdokument – zu erzeugen. Je aufwändiger diese Daten zu ermitteln sind, desto mehr Rechenleistung benötigt der Export. Die Prozessorlast wird in erster Linie durch die Abfragen und Anweisungen in den Layoutdateien verursacht:

  • Bei Dateilisten werden meist die Inhalte von Ordnern ermittelt und nach Dateityp gefiltert. So werden häufig alle Ressourcen-Dateien (herunterladbare Dateien) in einem CMS-Ordner einzeln daraufhin untersucht, ob sie in das zu erzeugende Webdokument aufgenommen werden sollen. Für jede dieser Dateien werden dann zahlreiche Daten (Titel, Pfad, URL, Zusammenfassung und andere) ermittelt und exportiert. Hierbei wird auch die Datenbank mit vielen kleinen Anfragen in Anspruch genommen.
  • Jeder Zugriff auf Inhalte einer anderen als der gerade exportierten Datei führt zu einer so genannten Abhängigkeit der exportierten Datei von dieser anderen Datei. Ändert sich der Inhalt der anderen Datei, so muss die aktuell exportierte Datei das nächste Mal erneut exportiert werden. Besonders viele neue Exporte werden durch Änderungen an Layoutdateien verursacht, da von diesen sämtliche Dateien in der Teilhierarchie betroffen sind, für die die Layoutdatei zuständig ist. Jeder Export einer Datei führt dazu, dass die Datei für die Suche neu indiziert werden muss.
  • Beim Export werden häufig Tcl-Prozeduren (so genannte systemExecute-Prozeduren, Formatter oder Callbacks) aufgerufen, um Daten, die nicht zu den Inhalten selbst gehören, zu berechnen oder Feldwerte und Links in ein bestimmtes Format zu bringen. Jeder Aufruf einer solchen Tcl-Prozedur kostet Rechenzeit. Insbesondere die Manipulation von Links durch den Link-Callback kann den Export erheblich verlangsamen, da dieser Callback für jeden Link in einem Dateiinhalt aufgerufen wird.
  • Die durch den Export entstehende Last wird natürlich auch wesentlich durch die Exporthäufigkeit beeinflusst. Kurze Exportzyklen zusammen mit sich schnell ändernden Inhalten können bei schwacher Hardware oder Durchsatzproblemen im Netzwerk schnell zu Überlast und den damit verbundenen Einschränkungen führen.

Laufen der Export durch die Template Engine und das Redaktionssystem auf dem gleichen Rechner, so verlängern sich bei hoher Last die Reaktionszeiten des Systems; die Redakteure müssen länger warten, bis GUI- oder Vorschauseiten vollständig aufgebaut sind.

Live-System

Das Live-System benötigt nicht viel Rechenleistung, sofern hauptsächlich statische Inhalte ausgeliefert werden.

Die dynamische Erzeugung von Inhalten, beispielsweise mit PHP oder Java, oder die intensive Nutzung von Portlets verlangen jedoch Prozessorleistung, ebenso die Verschlüsselung von Webseiten (d.h. die Nutzung von SSL) und ein hohes Aufkommen an Suchanfragen.

Der Bedarf des Live-System an Netzwerkbandbreite hängt im Wesentlichen von der Anzahl der von außen kommenden Requests und der Menge der dabei zu liefernden Daten ab. Bei hohem Bedarf sinkt die für andere Aufgaben (wie beispielsweise die Übertragung der exportierten Seiten auf den Live-Server) zur Verfügung stehende Bandbreite.

Empfehlungen

  • Optimieren Sie Ihre Layouts in Bezug auf die oben genannten Punkte.
  • Minimieren Sie die Anzahl der systemExecute- und Formatter-Aufrufe und vermeiden Sie Link-Callbacks.
  • Vergrößern Sie die Abstände zwischen Exporten (d.h. verringern Sie die Exporthäufigkeit).
  • Verlegen Sie Exporte nach Möglichkeit in Zeiten, in denen weniger oder nicht mit dem Redaktionssystem gearbeitet wird und der Abruf von Live-Seiten am geringsten ist.
  • Betreiben Sie die Template Engine und den Search Server auf einem anderen Rechner als das Redaktionssystem.

Lesen Sie im nächsten Abschnitt, wie Sie die vorhandenen Ressourcen besser nutzen können.