Blackfire: Pinpointing und Fixing Performance -Engpässe in Ihrem Gehöft verbesserte Anwendungen
Key -Erkenntnisse:
(Dieser Artikel ist Teil einer Reihe zum Erstellen einer Beispiel-Blog-Anwendung für Multi-Image-Galerie für Leistungsbenchmarking und Optimierung. Greifen Sie hier auf das Repository zu.)
Dieser Beitrag baut auf früheren Einführungen in Blackfire auf und demonstriert seine praktische Anwendung bei der Identifizierung und Lösung von Leistungsproblemen. Wir werden es verwenden, um unser Beispielprojekt zu analysieren und Bereiche für eine sofortige Verbesserung zu zielen. Wenn Sie Homestead verbessert (was empfohlen wird), sollte Blackfire bereits eingerichtet sein. Es ist kein früheres Blackfire -Wissen erforderlich.
Verständnis von Blackfire -Metriken:
Bevor wir beginnen, definieren wir wichtige Begriffe, die in den Leistungsdiagrammen von Blackfire verwendet werden:
Einrichten von Blackfire:
Homestead.yaml
erforderlich sind. Die Datei enthält Platzhalter unten: # blackfire: # - id: foo # token: bar # client-id: foo # client-token: bar
diese Zeilen übernommen und die Platzhalterwerte durch Ihre Kontodetails ersetzen.
Optimierung mit Blackfire: Eine Fallstudie
Wir werden die Homepage - eine kritische Seite für jede Website. Langsame Ladezeiten hier wirken sich direkt auf die Benutzererfahrung und die Absprungraten aus. Während andere Seiten (z. B. Bild -Upload) getestet werden könnten, wird die Leseleistung im Allgemeinen vor der Schreibleistung priorisiert.
Unsere anfängliche App lädt und sortiert alle Galerien nach Alter. Öffnen Sie die Homepage, klicken Sie auf die Blackfire -Erweiterungs -Schaltfläche und wählen Sie "Profil!".
Erstprofilergebnisse:
Die Grafik zeigt, dass PDOExecute
100% der inklusiven Zeit (dunkelrosa Abschnitt) verbraucht, was darauf hinweist, dass es sich um den primären Engpass handelt. Während andere Methoden größere hellrosa Balken (inklusive Zeit) zeigen, stellen diese die kumulative Zeit ihrer abhängigen Funktionen dar. Die dunkelrosa Abschnitte repräsentieren die Funktionen, die sofortige Aufmerksamkeit benötigen.
zum RAM -Modus zeigt, dass das Rendering des Zweigs die Mehrheit (ca. 40 MB) des RAM verbraucht. Dies wird angesichts der großen Datenmenge erwartet.
heiße Pfade (dicke Grenzen) unterstreichen deutlich die Engpässe. Intensive Knoten (Knoten mit hoher Zeit) können auch auf Probleme hinweisen, auch wenn nicht direkt Teil des heißen Pfades.
Die -Analyse zeigt, dass PDOExecute
und unserialize
(hohe RAM -Verwendung) durch das Laden aller Galerien auf der Homepage verursacht werden. Die Lösung: Pagination implementieren.
Implementierung von Pagination:
add a PER_PAGE
Konstante zu HomeController
und setzen Sie es auf einen Wert wie 12.
Ändern Sie die Abfassungsverfahren für die Galerie, um Pagination zu verwenden:
# blackfire: # - id: foo # token: bar # client-id: foo # client-token: bar
$galleries = $this->em->getRepository(Gallery::class)->findBy([], ['createdAt' => 'DESC'], self::PER_PAGE);
HomeController
eine neue Methode für faule Ladegalerien hinzu: {% block javascripts %} {{ parent() }} <🎜> {% endblock %}
Leistungsvergleich:
Nach dem Profiler nach der Implementierung der Pagination führen zu erheblichen Verbesserungen:
Speicherverbrauch wird zehnfach reduziert und das Laden ist fast augenblicklich. Der neue Engpass ist DebugClass
, eine Folge der Entwicklungsumgebung. Die Umstellung in den Produktionsmodus verbessert die Leistung weiter:
Schlussfolgerung:
Die Leistung der Anwendung wird dramatisch verbessert, wobei die Ladezeiten der Seiten auf 58 ms gesunken sind. Weitere Optimierungen sind minimal. Regelmäßige Leistungstests mit Blackfire sind von entscheidender Bedeutung, und die Integration in Ihre CI/CD -Pipeline (verfügbar mit Blackfire's Premium -Plan) ist sehr zu empfehlen.
häufig gestellte Fragen (FAQ) zur PHP -Leistungsoptimierung:
Der vorgesehene FAQ -Abschnitt bleibt weitgehend unverändert, da er wertvolle Informationen bietet, die für die PHP -Leistungsoptimierung im Allgemeinen relevant sind. Es deckt Themen wie Überwachungstools, gemeinsame Probleme, Optimierungstechniken, Skalierbarkeit und Best Practices genau ab.
Das obige ist der detaillierte Inhalt vonPerformance-Optimierung auf PHP-Ebene mit Blackfire. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!