Ich benutze eine Drupal-Site mit einem Thema von rockettheme.
Die Benutzer sind Mitgliedsbenutzer. Das Problem ist aus unbekannten Gründen, dass die Seite sehr langsam ist. Das Öffnen der Seite dauert ca. 20 Sekunden.
Ich habe versucht, den VPS zu wechseln, aber keinen Leistungsgewinn.
Ich verwende nicht viele Module, die die Site blockieren würden.
Welche möglichen Lösungen sollte ich prüfen, um die Geschwindigkeit der Website zu erhöhen und sie in der normalen Zeit zu öffnen?
120 Abfragen in 113,52 Millisekunden ausgeführt. Abfragen, die länger als 5 ms dauern, und Abfragen, die mehr als einmal ausgeführt werden, werden hervorgehoben. Die Ausführungszeit der Seite betrug 2534,15 ms.
87 Abfragen in 24,6 Millisekunden ausgeführt. Abfragen, die länger als 5 ms dauern, und Abfragen, die mehr als einmal ausgeführt werden, werden hervorgehoben. Die Seitenausführungszeit betrug 2609,59 ms.
123 Abfragen in 41,05 Millisekunden ausgeführt. Abfragen, die länger als 5 ms dauern, und Abfragen, die mehr als einmal ausgeführt werden, werden hervorgehoben. Die Seitenausführungszeit betrug 1282,27 ms.
Ich denke nicht, dass dies normal ist.
quelle
Antworten:
Aktualisieren:
Das ist schließlich ein ziemlich guter Hinweis - wird MooTools wirklich benötigt? Drupal verwendet jQuery ausschließlich in Kernmodulen, und die meisten bereitgestellten Module tun dies ebenfalls. Beachten Sie daher, dass die gleichzeitige Verwendung von mehr als einem wichtigen JavaScript-Framework von den meisten Entwicklern im Allgemeinen nicht empfohlen wird, in der Regel mindestens eine dedizierte Behandlung erfordert und möglicherweise eingeführt wird Alle Arten von seltsamen (dh schwer zu debuggenden) Problemen, unabhängig davon: In jQuery + MooTools
finden Sie viele verwandte Beiträge zu Stack Overflow. In dieser beispielhaften Antwort auf Mootools und JQuery Integration werden insbesondere große Seitenverlangsamungen erwähnt.
Da Sie nicht viele Module verwenden, werden wahrscheinlich nur in einem isolierten Funktionsbereich speziell nach MooTools gefragt. Daher schlage ich vor, dass Sie dies vollständig deaktivieren (dh sicherstellen, dass mootools.js nicht mehr geladen ist) und prüfen, ob es einen Unterschied macht.
Sie können sich die verschiedenen Antworten auf eine entsprechende Frage zum Stapelüberlauf ansehen - während sie sich in der Zwischenzeit meistens mit den hier angegebenen überschneiden, gibt es in den Kommentaren hier und da einige zusätzliche Erkenntnisse.
Ansonsten möchte ich noch einmal eine wichtige Sache hervorheben, wie von DisgruntledGoat und bpeterson76 bereits teilweise erwähnt (jeweils +1):
Trotz Drupal nicht die schnellsten CMS in erster Linie sein, die Ladezeiten Sie sehen nicht normal sind überhaupt (wenn möglich auf schlecht konfigurierte Systeme / Server) - deshalb sollten Sie wirklich analysieren und identifizieren , die Ursache (n) erste , bevor Sie Optimierungen jeglicher Art anwenden! Sicher, einige empfohlene Optimierungen könnten auch ohne das helfen, aber die goldene Regel für Leistungsoptimierungen (und andere) ist wirklich, das Problem zu verstehen und nicht Versuch und Irrtum.
Um Ihnen den Einstieg zu erleichtern, möchte ich drei speziell angesprochene Themen kommentieren und einen Hinweis auf eine gründlichere Dokumentation zu den folgenden Themen geben:
All dies und noch viel mehr wird über Drupal-Caching, Geschwindigkeit und Leistung angegangen - dieser Ressourcen-Hub mag auf den ersten Blick überwältigend aussehen, aber wie gesagt , das Verständnis des Problems ist der Schlüssel zur Lösung von Leistungsproblemen -, um dennoch einen Starthilfe zu ermöglichen Schließlich empfehle ich ausdrücklich, die Überlegungen zur Serveroptimierung zu lesen , insbesondere den Abschnitt Grundlegendes und Konfigurieren Ihres Stacks für die Leistung .
Viel Glück!
quelle
Wenn die Seite 20 Sekunden lang geladen wird, liegt wahrscheinlich irgendwo ein schwerwiegender Engpass vor. APC kann es auf 5-10 Sekunden reduzieren, aber das ist für den Server immer noch nicht gut genug. Und es hilft nicht, wenn der Engpass eine SQL-Abfrage ist.
Module können die Site ein wenig verlangsamen, aber nicht so sehr. Deaktivieren Sie nacheinander alle, um festzustellen, ob es große Verbesserungen gibt.
Eine andere Lösung, wenn Sie die Geschwindigkeit nicht so stark verbessern können, besteht darin, Seiten so weit wie möglich zwischenzuspeichern. Bei verschiedenen Sites (mit CodeIgniter) habe ich festgestellt, dass dies einen RIESIGEN Unterschied macht - der Server reagiert sofort und Sie haben wirklich nur die clientseitige Zeit.
Abhängig davon, was Sie in die 20-Sekunden-Verzögerung einbeziehen (dh nur serverseitig oder auch clientseitig), ist die Seite mit den Best Practices von Yahoo möglicherweise hilfreich.
Um festzustellen, wo der Engpass liegt, suchen Sie nach Profiler-Modulen für Drupal (falls vorhanden), die Ihnen mitteilen, in welchen Teilen der Code langsam ist. Sie können der Vorlage auch einen eigenen Timing-Code hinzufügen:
Wiederholen Sie dies an verschiedenen Stellen, und Sie sollten in der Lage sein, es auf ein oder zwei Abschnitte zu beschränken, die 10 bis 20 Sekunden lang ausgeführt werden.
quelle
quelle
Beim Erstellen von PHP-Apps habe ich festgestellt, dass ich mit Firefox oder den Entwicklertools von Chrome Engpässe auf niedriger Ebene beseitigen kann. Klicken Sie auf die Registerkarte Ressourcen und beobachten Sie, wie die Elemente der Seite geladen werden. Dies ist besonders wertvoll, wenn Sie mit XHR-Anforderungen (AJAX) arbeiten.
Beginnen Sie, indem Sie den Server anpingen. Ich habe eine Dev-Maschine, die sich neulich in einer ähnlichen Situation befand ... Die Dev-Maschine kriecht und benötigt mehr als 10 Sekunden zum Laden. Aber ich habe identischen Code auf einem anderen identischen (aber dedizierten) Server, der blitzschnell läuft. Bei Ping-Tests ist es schmerzhaft langsam. Es stellt sich heraus, dass der Computer gemeinsam genutzt wird und eine der anderen Personen mit einem Konto auf dem Server eine Site mit ultrahoher Bandbreite (wahrscheinlich eine Site für Erwachsene) ausführt, die alle anderen verlangsamt. Diese beleidigende Site wird jetzt vom Host entfernt.
Xdebug ist sicherlich eine gute Option, wie oben erwähnt. Es kommt jedoch nicht immer zur Ursache des Problems, wenn keine Fehler ausgegeben werden. Ich würde zuerst mit dem Fehlerprotokoll beginnen und sicherstellen, dass keine weiteren erstellt werden. Dann Xdebug.
Ich würde folgen, indem ich die Funktionen einzeln deaktiviere. Außerdem lohnt es sich, die Serverlast zu überwachen, um sicherzustellen, dass die MySQL- oder Apache-Prozesse nicht durch etwas anderes beeinträchtigt werden.
Wenn das Problem immer noch nicht behoben ist, würde ich die Bereiche, von denen ich glaube, dass sie das Problem verursachen, isolieren und Start- / End-Mikrozeit-Zeitstempel einfügen, die ich als Protokoll oder E-Mail ausgeben möchte. Es klingt albern einfach, aber ich habe mit dieser Methode eine Leistungssteigerung von mehr als 200% im Code festgestellt.
quelle
Ist das Caching aktiviert
/admin/settings/performance
?Es lohnt sich, dies noch einmal zu überprüfen, bevor Sie sich mit komplizierteren Lösungen befassen.
quelle
Ich empfehle Postgresql zu verwenden, drupal unterstützt es.
quelle