Zend Framework Performing Slow

8

Ich arbeite an einer Community-basierten Website, die zend framework verwendet - aber es ist so langsam, dass es eine Weile dauert, bis die Seiten geladen sind. Ich würde gerne wissen, welche Aspekte des Zend-Frameworks ich untersuchen sollte, um sicherzustellen, dass es viel schneller läuft.

Irgendwelche Tipps und Hilfe würden sehr geschätzt werden:)

Netter Rat - Ich nahm die Datenbank und indexierte sie von Grund auf neu - es gab keine Indizes, mit denen ich anfangen sollte: \ aber auf jeden Fall hat sich die Geschwindigkeit ein wenig verbessert, aber es ist immer noch ziemlich langsam. Gibt es noch etwas, das ich hier genau im Auge behalten muss?

Weil ich davon ausgehe, dass es etwas mit dem Framework zu tun hat, als ich zum ersten Mal grundlegende Tutorial-Projekte durchführte, die mit dem Framework erstellt wurden - sie waren auch ein bisschen langsam.

Schöne Tipps - wir haben uns den Zend Performance Guide Artikel angeschaut. Ich bin mir nicht so sicher, wo ich den Code für die Metadaten der Cachespeicher anlegen soll :( [tut mir leid, dass ich hier wie ein Noob bin], wie in Dieser Link

    
Ali 25.05.2009, 10:30
quelle

14 Antworten

8

Wenn Sie sich im selben LAN wie der Server befinden (zumindest zum Testen), können Sie Ihr Profil (etwas) von einem Client aus überprüfen.

Wenn es sich um einen einzelnen Computer handelt, ist der wahrscheinlichste Grund für Verlangsamungen Speicherprobleme (etwas, das zu viel oder zu wenig Hauptspeicher verwendet), gefolgt von schrecklichen DB-Abfragen.

Ein PHP-Opcode-Cache scheint immer hilfreich zu sein. Denken Sie auch daran, "atime" (Option noatime mount on * nix, eine Registry-Änderung unter Windows) zu deaktivieren, um teure Schreibvorgänge zu vermeiden.

Ein anständiger Artikel über weitere Zend-spezifische Dinge ist: Ссылка

    
LapTop006 25.05.2009, 13:22
quelle
20

Der einzige Weg, um sicher zu sein, wo Ihre Engpässe liegen, ist tiefes Profiling.

Ich benutze xdebug, kombiniert mit kcachegrind (Teil von kde für Windows). Es erzeugt vollständige Aufruf-Traces für jedes ausgeführte PHP-Skript, das Sie dann untersuchen können, um herauszufinden, welche Funktionen die meiste Zeit beanspruchen. Es sind keine Code-Änderungen notwendig, so dass Sie Bibliotheken von Drittanbietern wie Zend Framework einfach profilieren können.

Joeri Sebrechts 25.05.2009 11:04
quelle
7

Installieren Sie APC auf dem Server. Opcode-Caches eliminieren einen Großteil der durch Frameworks verursachten Overheads. Sie können dies normalerweise tun, indem Sie einfach

ausführen %Vor%

auf dem Server.

    
Emil H 25.05.2009 10:42
quelle
6

Installieren Sie APC auf jeden Fall, da es Ihnen wahrscheinlich die größte Leistungssteigerung (2-4x) für die geringste Arbeit bringt. Ich würde auch empfehlen, dass Sie sich den Abschnitt "Leistung" des Referenzhandbuchs ansehen .

>

Zend_Cache kann mit vielen der ZF-Komponenten verwendet werden, um sie zu beschleunigen, sowie mit deinen eigenen Daten.

    
David Snabel-Caunt 25.05.2009 11:03
quelle
6

Bei den meisten Leistungsproblemen im Web handelt es sich um Datenbankprobleme. Schauen Sie immer zuerst auf die Datenbankseite, bevor Sie fortfahren.

Es kann sein, dass eine Vielzahl von Datenbankaufrufen durchgeführt wird, bei denen Sie mit weniger Aufrufen genügen können, Indizes nicht in den richtigen Spalten.

Dies sind die Dinge, die normalerweise die Dinge verlangsamen.

    
Mischa Kroon 25.05.2009 11:29
quelle
3

Am offensichtlichsten wäre zend_cache

    
Rick J 25.05.2009 10:34
quelle
3

Schauen Sie hier nach:

Performance Guide zu Zend

Zend_Log , das Log & amp; Verfolgen Sie Ihre Anwendung

    
Boris Guéry 26.05.2009 15:29
quelle
2

Sie sollten den offiziellen Zend Performance Guide lesen.
Es gibt eine Menge Tipps, wie man die Geschwindigkeit von Zend verbessern kann, die meisten von ihnen sind über das Reduzieren der Anzahl von Dateien, die beim Start geladen werden.

Ссылка

    
Silfverstrom 25.05.2009 11:06
quelle
2

In Bezug auf Zend_Db_Table Metadaten-Caching sollten Sie den Cache in Ihrem Bootstrap konfigurieren und ihn als statische Eigenschaft der Klasse Zend_Db_Table_Abstract hinzufügen.

(Ähnlich wie Sie einen Standard-Datenbankadapter öffnen und ihn als Standardadapter für alle Zend_Db_Table -Objekte festlegen würden.)

Es gibt ein Codebeispiel zum Konfigurieren eines Standardmetadatencaches in dem Abschnitt des Handbuchs, mit dem Sie verknüpft sind. Dies würde in Ihrem Bootstrap gehen.

    
Bill Karwin 23.06.2009 17:15
quelle
1

Mit dem Datenbankkommentar einverstanden. Wenn Ihre Website langsam ist, handelt es sich wahrscheinlich NICHT um ein Problem mit dem Zend-Framework und höchstwahrscheinlich um ein Datenbankproblem.

    
PeterV 26.05.2009 11:24
quelle
1

Wenn Sie zu Beginn noch keine INDEXES in Ihrer Datenbank hatten, bin ich mir sicher, dass andere Dinge, die Sie tun, sehr falsch sind!

Wie auch immer ... Installieren Sie APC, um Ihren Opcode zwischenzuspeichern. Dies wird die Ausführungszeit drastisch verbessern. Die meisten Frameworks haben aufgrund der enormen Menge an Skripten, die in Ihrer Anwendung enthalten sein müssen, enorme Gemeinkosten. APC wird dieses Problem buchstäblich lösen. FastCGI kann auch die Leistung drastisch verbessern. So können persistente Datenbankverbindungen (vorausgesetzt, FastCGI ist installiert und funktioniert).

    
krakle 30.01.2012 00:51
quelle
0

Ссылка

Ich denke, wir müssen auf die Veröffentlichung von PHP5.3 warten und hoffen dann, dass wir es auf einer Produktions-Box verwenden können. :)

    
ali 11.06.2009 04:58
quelle
0

Ссылка

Sehen Sie sich jetzt ihr kostenloses Webinar an und zeigen Sie viele der Lösungen, die die Leute in diesem Thread erwähnt haben.

Hoffe, das hilft!

    
Brent 29.11.2010 17:51
quelle
0

Ich hatte ein sehr ähnliches Problem, es dauerte 10 Sekunden, um eine einzelne Seite zu laden, während ich an meiner lokalen Seite mit http://localhost/MY_WEB_SITE arbeitete. Durch Zufall habe ich http://127.0.0.1/MY_WEB_SITE ausprobiert und es hat sehr schnell (fast sofort) funktioniert. Ich bin mir nicht sicher, was das Problem mit localhost ist, aber es funktionierte für mich (übrigens bin ich auf Windows 7, checked system32 / drivers / etc / hosts und localhost ist dort definiert). Anstelle von localhost kann die Verwendung von 127.0.0.1 auch eine Lösung für Sie sein.

    
hevi 06.06.2012 21:23
quelle

Tags und Links