Wenn Sie so etwas profilieren, um den Engpass zu finden, müssen Sie die Dinge einzeln ausschließen. Sie benötigen eine Basislinie, um Vergleiche zu erhalten. Wenn Sie das Tool "ab" installiert haben (es wird mit Apache geliefert), können Sie dies verwenden.
Um Ihre Basislinie zu erhalten, empfehle ich, den Durchschnitt von mindestens ein paar hundert Anfragen zu erhalten. Hier ist ein Beispiel:
$ ab -n 400 http://yousite/
Durchsuchen Sie die Ergebnisse nach der Zeile "Zeit pro Anfrage". Sie sieht ungefähr so aus:
Time per request: 96.031 [ms] (mean)
Notieren Sie sich diese Zeit, da dies die Basislinie ist.
Um Apache als Täter auszuschließen, erstellen Sie eine statische Seite auf Ihrem Server (speichern Sie einfach das HTML einer Seite, die Sie für langsam / träge halten) und führen Sie ab erneut aus.
Wirf etwas PHP in die statische Seite. Es muss nicht viel davon sein, aber es sollte tatsächlich etwas Arbeit leisten. MediaWiki ist ein ziemlich guter Code. Wenn also ein PHP-Engpass auf Ihrem System vorliegt, würde mein Geld darin bestehen, den PHP-Stack tatsächlich in den Speicher zu laden und den Test erneut durchzuführen.
Schauen Sie sich die drei Zahlen an und sehen Sie, wo der größte Sprung zwischen den nächsten Schritten liegt. Meine Wette wäre, dass MySQL das langsamste der drei ist, aber es könnte sehr gut sein, dass Sie viele Bilder auf einer Seite laden, die die Gesamtanforderungszeit verlangsamt. In diesem Fall möchten Sie möglicherweise das Design des überdenken Seite.
Wir führen eine MediaWiki-Installation in guter Größe aus und haben schnell festgestellt, dass MediaWiki stark von einer zwischengespeicherten Instanz profitiert. Andernfalls müssen bei jeder Anforderung viele Sprachdateien und Benutzerdaten geladen werden.
quelle
Zombat und Frank Farmer haben ein paar nette Vorschläge (ich mag den Vorschlag für langsame Abfragen selbst) bei Stack Overflow 697802 . ab for apache ist auch sehr nützlich, um die von Ihnen vorgenommenen Änderungen zu testen.
quelle
Sehr wichtig ist auch die Konfiguration des Prefork-Moduls. Ich habe die Zahlen im spezifischen Abschnitt von /etc/apache2/apache2.conf drastisch reduziert. Seitdem hatte ich eine massive Latenz, bei der die Seite bis zu einer Minute stehen blieb bevor ich mit dem Laden fertig war ... das Tracing mit den Trace- und Entwicklungsmodulen von Drupal sowie das Profiling mit xdebug ließen mich ahnungslos. Ich habe APC eingerichtet und das MYSQL-Conf modifiziert, aber der Schuldige waren tatsächlich die zu kleinen Werte für das Prefork-Modul diese auf ein moderates UND ausreichendes Niveau und jetzt ist der Server wieder blitzschnell. Achten Sie auf diese Zahlen, wenn Sie unerklärlich hohe Ausführungszeiten für Seiten haben ...
Diese Werte gelten für eine virtuelle Hostumgebung mit 512 MB RAM + 256 MB Swap. Viel Glück beim Finden des optimalen Servers;)
quelle