Seitdem ich zu Contao umgestiegen bin, ist die Website deutlich langsamer geworden. Vorher hatte ich bis 23.8. eine Kombination aus PivotX und phpCMS zu laufen. Im Anhang findet ihr drei Diagramme vom Servermonitoring der letzten 365 Tage.
Hier ein paar Eckdaten zur Website:
Datenbank: 413 Seiten, 769 Artikel, 11.360 Inhaltselemente, 22.394 Dateien, 8.976 Nachrichten, 9.049 Tags, 1,4 Millionen Suchbegriffe im Index
Zugriffe: 135 GB Traffic im September (ca. 81 % aller auf dem Server gehosteten Domains)
16 Millionen Anfragen im September, zuvor 25-30 Millionen Anfragen je Monat (weniger unter Contao bedingt durch die andere Struktur und noch nicht alle Inhalte übernommen)
Rund 480.000 Dateien und 300.000 Seiten im September abgerufen.
Tarif/Hoster: Domainfactory
ManagedServer XL5
Einstellungen php.ini: max_execution_time = 720
memory_limit = 1000M
Erweiterungen: Unter Contao 3.1.2 sind installiert:
ajax 1.1.6 stable
avatar 2.0.4 stable
backend_user_online 3.1.0 stable
backend_websitepreview 2.1.0 stable
banner 3.0.0 rc1
botdetection 3.1.0 stable
chesstable
cron 3.1.0 stable
efg 2.0.1 stable
geshi 1.0.8 stable
image_sort_wizard 1.1.0 stable
includes 0.1.2 stable
jira_issue_collector_wizard 3.0.0 stable
lastlogin 3.0.0 stable
m17-sticky-backend-footer 2.0.4 stable
memberlist 1.3.0 stable
newspagination 1.5.0 rc2
om_searchkeys 1.0.2 stable
pgnviewer 1.0.0 rc1
photoalbums2 1.1.0 stable
simple_ajax 1.0.1 stable
sort_wizard 1.0.0 stable
survey_ce 3.0.0 stable
tags 3.0.1 stable
textwizard 3.0.0 stable
translation_fields 1.0.0 beta1
usemap 3.0.0 stable
visitors 3.1.4 stable
xls_export 3.0.0 stable
Performance-Killer sind aus meiner Sicht das Nachrichtenmodul und das Galerie-Inhaltselement. Auch die externe tags-Erweiterung macht Probleme, allerdings nur unter Version 3.1.3: Das Backend wird an einigen Stellen, wo höchstwahrscheinlich tags benötigt wird, deutlich langsamer und ich muß(te) bis zu gefühlten 30 Sekunden warten, bis die Backend-Seite geladen wurde. Unter 3.1.2 hat noch alles geflutscht. Deshalb habe ich 3.1.3 wieder gekillt.
Doch nun zu den beiden Core-Modulen.
Das Nachrichtenmodul lädt und parst in der Gesamtübersicht von Nachrichten unverständlicherweise auch die Inhaltselemente, die man ja in der Teaseransicht gar nicht zu sehen bekommen will. Am Sonnabendabend hatte ich in einer Nachricht ein Galerie-Inhaltselement eingebunden: 41 JPG's mit insgesamt ca. 120 MB und Auflösungen von jeweils 3200x2400. Contao braucht unheimlich lange, um die dafür nötigen Thumbnails zu erstellen. Das wäre nicht weiter schlimm, würden die Thumbnails nur einmal erstellt. Aber das wird immer und immer wieder hundertfach wiederholt. Als ich Sonntagabend nach Hause kam, hatte ich einige Mails wegen eines nicht erreichbaren Servers. Und das betrifft natürlich dann auch gleich alle Domains, wenn ein Prozess hängt. Nachdem ich die Galerie von der Nachricht in die Erweiterung photoalbums2 ausgelagert hatte, beruhigte sich der Server wieder und lief einigermaßen flüssig.
Damit wären wir auch gleich beim Galerie-Inhaltselement. Für mich völlig unverständlich ist, daß der Cache entweder gar nicht oder nur mangelhaft genutzt wird. Irgendwo hatte ich mal gelesen, daß im Backend keine Grafiken gecacht werden, weswegen gerade dieses Inhaltselement aber auch der Dateimanager ein Ärgernis ist. Während ich im Backend auf die Anzeige der Seite warte, fehlt dem Frontend ein Serverprozess um den Besucheransturm zu bewältigen. Die Thumbnails im Dateimanager und in Inhaltselementen sollten deshalb grundsätzlich dauerhaft angelegt werden. Oder gibts hier wirklich Grafik-Junkies die dauernd an ihren Grafiken rumbasteln und alle paar Stunden neue Versionen auf den Server laden? Jede vernünftige Bildalbenverwaltung legt die Thumbnails dauerhaft an und generiert die nur auf Wunsch neu. Warum kann Contao das nicht?
Zurück zum Nachrichtenmodul: Hier gehört das Laden und Parsen von Inhaltselementen in der Normalansicht (Teaseransicht) abgeschaltet. Meine Startseite würde deutlich beschleunigt, wenn nicht im Hintergrund wertvolle Zeit für das Erstellen von Datenmüll investiert würde.
Zum Galerie-Element hatte ich vor einiger Zeit schon mal was auf Github geschrieben. Meinen dort genannten Patch kopiere ich nach jedem Update in den Contao-Core. Hat man nämlich mehrere Galerie-Elemente eingebunden, wird das Backend komplett lahmgelegt.
Lesezeichen