Performance Probleme / hohe Response Time / hoher Speicherverbrauch

am 18.12.2011 - 11:27 Uhr in
Hallo zusammen,
ich bin aktuell neu in der Welt von Drupal und bin nun seit einiger Zeit dabei mir die erste Seite unter Drupal zu erstellen. Nachdem die Webseite nun nach und nach Gestallt annimmt und logischer Weiße mit der Zeit immer mehr Module hinzukamen wurde die Webseite sehr langsam. Sowhl im Front- als auch im Backend. Die Seitenaufrufe brauchen rund 5 bis 6 Sekunden! Das ist mit deutlich zu lange. Vorallem wenn man im Backendarbitet nervt die lange Wartezeit schon extrem.
Hier mal kurz einen Überblick über doe Hardware. Ich habe als Entwicklungsserver einen seperaten MySQL Server und einen reinen Apache Node.
MySQL Server:
2x AMD Opteron 8 Core 2.3 Ghz
64GB Ram
Raid 10 mit 6x 147GB SAS auf dem die Datenbank liegt.
Apache Node:
2x Intel Xeon 4 Core 2.6Ghz
16GB Ram
Raid1 2x 74GB SAS
Jetzt fehlt mir natürlich ein wenig die Erfahrung wie kann ich das am besten debugen um herauszufinden, was (bestimmtes Modul, Datenbank usw.) eventuell der Falschenhals ist.
An der Hardware dürfte es denke ich mal nicht liegen. Zumal man bedenken muss, dass auf dieser Hardware aktzell keine Last vorhanden ist.
Als erstes habe ich mal das Modul Performance Logging aktiviert und mir dieses mal betrachtet. Dieses habe ich auch mal in den Anhang gepackt. Hier kann man deutlich die hohe Response Time von bis zu 6000 ms erkennen. Aber auch der Speicherverbrauch von gut 130MB macht mich sehr stutzig. Ist das denn für Drupal normal? Dies könnte für mich durchaus der Knackpunkt sein. Denn wenn das stimmt, würde bedeuten, dass bei jedem Seitenaufruf ca. 3x 130MB vom Datenbankserver zu dem Apache Node übertragen werden müssen. Diese sind zwar über 1Gbit miteinander verbunden aber wenn wir im Durchschnitt von ca 70MB/s ausgehen, dann würde das auch durchaus mit 5 bis 6 Sekunden hinkommen.
Allerdings läuft die Seite auch nicht wirklich schneller wenn ich Datenbank und Apache auf dem gleichen Server laufen lassen!
Bin für jeden Hinweis und Debugging Vorschlag Hilfreich. Falls Ihr noch irgendwelche Informationen benötugt einfach bescheid geben.
Danke und Grüße
Anhang | Größe |
---|---|
drupalcenter.JPG | 45.29 KB |
- Anmelden oder Registrieren um Kommentare zu schreiben
Also die Hardware wird wohl
am 20.12.2011 - 11:49 Uhr
Also die Hardware wird wohl tatsächlich nicht das Problem sein. Damit dürftest du sogar richtig grosse Sites performant betreiben können!
Ich denke eher, dass der Apache und / oder der MySQL Server nicht so toll configuriert sind.
130MB Speicherverbrauch ist bei D7 keine Seltenheit, sollte aber - zumindest bei deiner Hardware - keine Rolle spielen.
Hast du irgendwelche Caches am Laufen?
APC bringt z.B. ziemlich viel und ist mit minimalem Aufwand installiert.
Hast du unter im Drupal unter System - Entwicklung - Leistung (admin/config/development/performance) schon alles aktiviert?
Wieviel angemeldete / anonyme Besucher hast du denn auf der Site?
Devel
am 20.12.2011 - 12:32 Uhr
Hallo Leo,
hast Du mal das Devel-Modul probiert? Dort einfach unter Konfiguration / Entwicklung / Devel-Einstellungen die Optionen "Abfrageprotokoll anzeigen", "Seitentimer anzeigen" und "Speicherverwendung anzeigen" aktivieren. Damit siehst Du genau, wie lange die Datenbankoperationen oder die eigentlichen PHP-Operationen insgesamt benötigen. Dies gibt zumindest schonmal einen Anhaltspunkt, ob die Datenbank generell zu langsam ist, zu viele Abfragen (vielleicht durch ein Modul oder umständlichen Theming-Code) generiert werden oder ob es generell an der PHP-Ausführungsgeschwindigkeit liegt.
Gruß,
Sven
Devel
am 22.12.2011 - 14:33 Uhr
Hallo,
erstmal vielen Dank für die Tips. Ich bin der Sache ein wenig näher gekommen. Und zwar gibt es bei mir wohl irgendein Problem mit dem Memcache Modul. Egal ob ich die Memcache API direkt benutze oder über den Cacherouter das ganze einbinde. Ohne Memcache läuft die Seite deutlich schneller.
Ich habe nun mal als Cache APC und xCache eingerichtet und beim Devel Modul mir die Ausgabe der Zeiten aktiviert. Muss sagen beide Caches liegen ungefähr gleich auf was die Zeiten bertrift.
Hier mal eine Ausgabe mit xCache:
Page execution time was 674.24 ms. Executed 264 queries in 118.33 milliseconds.
Memory usage:
Memory used at: devel_init()=21.8 MB, devel_shutdown()=86.3 MB.
Rufe ich die Seite ein zweites mal auf:
Page execution time was 603.11 ms. Executed 224 queries in 49.13 milliseconds.
Memory usage:
Memory used at: devel_init()=21.8 MB, devel_shutdown()=84.32 MB.
Wie man sehen kann hat sich die Querry Time halbiert. Dennoch bleibt es bei guten 600ms. Jetzt ist natürich für mich als Anfänger die Frage, ist das normal für Drupal im angemeldeten Zustand oder geht das noch schneller. Hier fehlen mir einfach die Vergleiche. Das System ist zudem aktuell noch nicht produktiv. Ich bin also der einige User der auf dieser Seite sein Unwesen treibt.
Als anonymouse mit aktiviertem Boost Modul habe eine keinerlei Probleme. Alles super performant.
Seitencaches wie Boost oder
am 29.12.2011 - 15:02 Uhr
Seitencaches wie Boost oder die Drupal eigenen Caches funktionieren m. W. nur für anonyme Besucher.
Aber 600ms ist doch nicht schlecht! Weiss ja nicht, was auf der Seite ausgegeben wird, aber der Content muss ja auch gerendert werden.
Wegen PHP Cache: Ich verwende ausschlieslich APC, da mir der stabiler erscheint und wohl auch am häufigsten eingesetzt wird.
Der PHP-Cache wirkt auch für angemeldete Benutzer.
Wie viel Besucher / Traffic erwartest du denn auf deiner Site, wenn du die gleich so exorbitant ausstattest?!?
Normalerweise reicht eigentlich APC und das Drupal eigene Caching voll aus.
Musst du bestimmte Antwortzeiten erreichen?
Du kannst auch mal versuchen, ein einfacheres Theme zu nehmen, da das manchmal auch bremst.