Anzeige - [Interessiert an einer Anzeige?]
(?) Tags raten (?) cache, komprimierung, optimierung, performence (edit)
 
Reply to this topicStart new topicStart Poll
> PHP: Performance verbessern, GZip / Cache
cr4m0
Geschrieben am: Mo 24.03.2008, 16:12
Report PostQuote Post

AyomRank 4
********

Gruppe: Member (aktiv)
Beiträge: 126
Mitglied seit: 30.07.2007


Ich beschäftige mich im Moment damit, die Performance meiner Seite zu verbessern, die ich mit PHP programmiert habe. Als Datenbank nutze ich MySQL. Dazu habe ich zwei angeblich gute Methoden gefunden. Könnt ihr etwas dazu sagen, habt ihr sie vielleicht schon getestet?

1) GZip-Komprimierung verwenden, dafür gibt es "http://hx3.de/software-webentwicklung-23/tutorial-g-e-zip-pt-surft-sichs-besser-9764/" mit mehr Komfort
2) Cache für die PHP-Seiten verwenden, z.B. durch "http://sourceforge.net/projects/quickcache/"
3) Cache per HTML-Datei, Anleitung auf "http://phpperformance.de/ausgaben-in-cache-speichern/"
4) Puffer durch ob_start / ob_get_clean
Top
PMEmail Poster
Top
 
 
Chr1977
#2 Geschrieben am: Mo 24.03.2008, 16:46 (+00:34)
Report PostQuote Post

AyomRank 2
****

Gruppe: Member (aktiv)
Beiträge: 17
Mitglied seit: 10.08.2006


Sind denn die Datenbank-Abfragen auch schon optimiert? Je nach Größe der Datenbank kann sowas ja auch die Performance der Seite stark beeinflussen.

Caching habe ich bei eigenen Skripten noch nicht selbst eingesetzt, aber ich habe mal gelesen, dass sich damit die Performance je nach Aufbau der Seite stark beschleunigen lässt.


--------------------
Top
PMEmail Poster
Top
 
manuel
#3 Geschrieben am: Mo 24.03.2008, 17:22 (+00:36)
Report PostQuote Post

AyomRank 5
**********

Gruppe: Member (aktiv)
Beiträge: 261
Mitglied seit: 14.01.2004


4.) APC / eAccelerator etc. verwenden.
- für a.) Opcache
- für b.) Ergebnisse im Memory speichern.

5.) z.B. mit Xampp eine profiling-Datei erstellen mit wincachegrind analysieren und langsame Stellen optimieren.
6.) Ergebnisse in serialized Arrays ablegen
7.) wenn man echt verzweifelt ist php-Optimzier mit 4.) kombinieren oder alleine verwenden.

und die Datenbank Abfragen (wenn komplex) optimieren!!
Top
PM
Top
 
cr4m0
#4 Geschrieben am: Mo 24.03.2008, 17:51 (+00:28)
Report PostQuote Post

AyomRank 4
********

Gruppe: Member (aktiv)
Beiträge: 126
Mitglied seit: 30.07.2007


OK, Danke schonmal für eure Antworten.

eAccelerator ist auch ein Open-Source-Produkt zum Erstellen eines Cache für PHP-Seiten. Dafür muss man aber Änderungen an der Serverkonfiguration vornehmen, was ich nicht darf (Shared Hosting). Bei JPCache muss man das nicht machen.

Danke auch schonmal für die ganzen anderen Tipps, die werde ich mir bald auch mal genauer ansehen.

Mich würde aber noch mehr interessieren, welche Erfahrungen ihr mit den ersten vier Methoden (mein erster Beitrag) gemacht habt und ob ihr diese empfehlen könnt.
Top
PMEmail Poster
Top
 
jAuer
Jürgen Auer - freiberufl. Programmierer
#5 Geschrieben am: Mo 24.03.2008, 18:44 (+00:53)
Report PostQuote Post

AyomRank 8
Group Icon

Gruppe: Experten Entwicklung
Beiträge: 1948
Mitglied seit: 4.02.2006


Zuerst kommt die Diagnose, dann kann man sich um die richtige Kur bzw. die passende Medizin Gedanken machen.

Sprich: Auch mit PHP-Kenntnissen könnte ich jetzt noch gar nix sagen - und sollte auch nichts sagen.

5 Beispiele:
  • 1. PHP-Code holt sich eine Tabelle mit 1000 Zeilen und führt für jede Zeile vom Ergebnis eine neue Sql-Abfrage aus, das ganze dreimal in jeder Seite
  • 2. PHP-Code macht eine einzige Abfrage - aber innerhalb dieser wird eine 5-GB-Tabelle per Fullscan durchsucht, Indices fehlen oder werden aufgrund der Struktur der Abfrage nicht genutzt.
  • 3. Die Ausführung dauert 0.01 Sekunden - aber jede Seite hat drei zufällige 5-MB-Bilder.
  • 4. Aufgrund von irgendeinem Fehler erzeugt die Verarbeitung einer Seite eine 50%-Prozessorauslastung. Bei hinreichend vielen Nutzern ist der Prozessor dicht.
  • 5. Der Server ist prinzipiell unterdimensioniert und swapt deshalb ständig.

In allen fünf Fällen sieht die Kur / die Medizin anders aus.

Sprich: Erst einmal die zeitraubenden Stellen identifizieren.

Anmerkung zum GZIP: Der oben zitierte Artikel verweist in den Features auf ein Problem:
QUOTE
- Die Kompression passt sich an die Serverload an, d. h. ist der Server sehr ausgelastet wird die Kompression runtergesetzt


GZIP erzeugt zusätzliche Prozessorlast. Wenn (4) oder (5) das Problem wäre, dann würde sich das mit GZIP womöglich noch verschlimmern.


--------------------
Web-Anwendung 3.0: Ein Online-Kalender für Termine vieler Filialen.

server-daten: Web-Datenbanken zum Mieten
Konzentrieren Sie sich auf Ihr Kerngeschäft - nutzen Sie eine schlanke, schnelle Online-Datenbank von verschiedenen Standorten.
Top
PMEmail PosterUsers Website
Top
 
cr4m0
#6 Geschrieben am: Mo 24.03.2008, 19:47 (+01:02)
Report PostQuote Post

AyomRank 4
********

Gruppe: Member (aktiv)
Beiträge: 126
Mitglied seit: 30.07.2007


OK, das stimmt wohl. Aber es gibt ja auch Verbesserungen, die grundsätzlich durchgeführt werden können und immer helfen. Zum Beispiel ist mysql_fetch_assoc immer schneller als mysql_fetch_row, mysql_fetch_array und mysql_fetch_object. Deshalb habe ich diese Funktionen schon ersetzt.

Bei GZip habe ich jetzt eingesehen, dass es nicht das Beste ist. Aber es gibt ja noch drei Möglichkeiten zum Verbessern der Performance, die ich genannt habe:
1) Cache für die PHP-Seiten verwenden, z.B. durch "http://sourceforge.net/projects/quickcache/"
2) Cache per HTML-Datei, Anleitung auf "http://phpperformance.de/ausgaben-in-cache-speichern/"
3) Puffer durch ob_start / ob_get_clean
Wie findet ihr diese Möglichkeiten? Sind sie sinnvoll?
Top
PMEmail Poster
Top
 
profo
#7 Geschrieben am: Mo 24.03.2008, 21:24 (+01:37)
Report PostQuote Post

AyomRank 5
**********

Gruppe: Member (aktiv)
Beiträge: 221
Mitglied seit: 19.01.2007


Ich würde Dir vorschlagen, Dir vor jeglicher Optimierung den Rat von Jürgen zu Herzen zu nehmen.

Wenn Du nicht weisst, was Deine Seite ausbremst, ist jegliche Optimierung ein Fehler. Du steckst nämlich Arbeitszeit in etwas, das überhaupt kein Problem ist. Und riskierst es, durch die unnötige Änderung Fehler oder Inflexibilitäten einzubauen.

Ich kenne das selbst von manchen Kunden; großen wie kleinen. Sie wollen ihr Projekt gerne starten, und es soll möglichst heute noch losgehen. Aber eigentlich wissen sie gar nicht, wohin. Und wenn man sich ans Motto: "Wohin? Weiss nicht. Aber erst mal losgehen!" hält, läuft man manchmal auch vom Ziel weg.

Abgesehen vom Grundsätzlichen finde ich die Sammlung mit Optimierungs-Tipps aber schick!


--------------------
Forenverzeichnis, Blogverzeichnis und Wikiverzeichnis ohne Backlinkfplicht
E-Mail mit mailde.de - Einfach E-Mail!
beziehungs-kiste.net - Das Tratschforum für Singles, Paare und Familien
Top
PMEmail PosterUsers Website
Top
 
cr4m0
#8 Geschrieben am: Mo 24.03.2008, 23:26 (+02:01)
Report PostQuote Post

AyomRank 4
********

Gruppe: Member (aktiv)
Beiträge: 126
Mitglied seit: 30.07.2007


Ich habe einige Artikel auf "http://www.phpperformance.de/" gelesen. Da werden PHP- und MySQL-Anwendungen getestet und in der Performance verglichen. Diese Seite kann ich jedem empfehlen, die Artikel sind sehr gut und es gibt auch viele Kommentare und Tipps von anderen Leuten da.
Laut dieser Seite bringen bestimmte Veränderungen immer Vorteile, z.B. mysql_fetch_assoc statt den anderen Möglichkeiten. Diese Veränderungen meinte ich. Deshalb wollte ich auch wissen, ob ihr Erfahrungen mit den folgenden Möglichkeiten habt:
1) Cache für die PHP-Seiten verwenden, z.B. durch "http://sourceforge.net/projects/quickcache/"
2) Cache per HTML-Datei, Anleitung auf "http://phpperformance.de/ausgaben-in-cache-speichern/"
3) Puffer durch ob_start / ob_get_clean

Von Jürgens aufgelisteten Problemem sind 1-3 auf keinen Fall bei mir vorhanden. 4 und 5 im Moment auch nicht. Mir geht es auch nicht darum, dass meine Seite einen Fehler hat und eine riesige Auslastung hat. Ich möchte nur alles optimieren, damit die Seite auch möglichst hohe Besucherzahlen aushält, ohne dabei Ladezeiten von 5 Sekunnden bei DSL zu haben...
Top
PMEmail Poster
Top
 
profo
#9 Geschrieben am: Mo 24.03.2008, 23:42 (+00:16)
Report PostQuote Post

AyomRank 5
**********

Gruppe: Member (aktiv)
Beiträge: 221
Mitglied seit: 19.01.2007


Mit Caching habe ich ein wenig Erfahrung. Es schränkt die Dynamik Deiner Seiten immer ein bisschen ein. Wenn Du eine nennenswerte Zahl an Seiten hast, bei denen sich nichts ändert, ist File- oder Speichercaching aber sehr sinnvoll. Persönlich würde ich da - wie Du vielleicht schon vermutest - rein gar nichts machen, solange es keine Lastprobleme gibt. Ich finde die Zeit dann besser in Content und Usability aufgehoben.


--------------------
Forenverzeichnis, Blogverzeichnis und Wikiverzeichnis ohne Backlinkfplicht
E-Mail mit mailde.de - Einfach E-Mail!
beziehungs-kiste.net - Das Tratschforum für Singles, Paare und Familien
Top
PMEmail PosterUsers Website
Top
 
PH
#10 Geschrieben am: Di 25.03.2008, 08:57 (+09:14)
Report PostQuote Post

AyomRank 7
**************

Gruppe: Member (aktiv)
Beiträge: 1052
Mitglied seit: 29.08.2004


PHP/MySQL Tuning vornehmen (ich hatte irgendwo selbst ein Paar Beiträge dazu geschrieben), irgendeinen Optimizer/Accelerator (Ich glaube ich habe Zend Optimizer drauf) installieren, ein Paar Indexe hier und da hinzugeben, an den Ressourcen-Zuweisungen in MySQL.ini etwas drehen...
das sollte für den Durchschnitts-Server bereits genügen.

Wenns nicht gerade eine Riesen-Seite ist und der Server eh etwas unterdotiert in RAM ist (z.B. alles unter 1 GB), kann es sich lohnen, einfach 1 GB mehr RAM einzuschieben, und etwas besseres mit seiner Zeit anzufangen.

Komprimieren (Gzip) dient etwas völlig anderem, und zwar reduziert es stark den Traffic, der durch Text-lastige Seiten verursacht wird.
Top
PMEmail Poster
Top
 
hatschi1810
#11 Geschrieben am: Di 25.03.2008, 11:20 (+02:23)
Report PostQuote Post

AyomRank 6
Group Icon

Gruppe: Experten Entwicklung (Mod)
Beiträge: 597
Mitglied seit: 20.01.2004


Ich möchte nur anmerken dass das Komprimieren bei sehr vielen Servern sehrwohl eine wesentliche Verbesserung der Serverperformance bewirken kann, das hängt aber davon ab was der Flaschenhals ist.
Die Anzahl der Requests an den Server läst sich so ordentlich senken, das sollte man nicht unterschätzen.

Läst sich aber recht leicht ausprobieren, danach weiß man sicher mehr…
Top
PMEmail Poster
Top
 
TorstenS
#12 Geschrieben am: Di 25.03.2008, 13:16 (+01:55)
Report PostQuote Post

AyomRank 4
********

Gruppe: Member (aktiv)
Beiträge: 118
Mitglied seit: 26.05.2007


Ich hatte, nachdem ich lange Zeit mit einer schlechten Server-Performance kämpfte, einen PHP-Profiler eingesetzt und damit analysiert, welche Scripte bzw. Scriptfragmente die meiste Zeit benötigen, denn das ist meistens auch gleichbedeutend mit der CPU-Last.

In dem Fall hatte ich auf http://xdebug.org/ gesetzt, ein Modul, was allerdings serverseitig eingerichtet werden muss. Jedoch kannst du ja dein Web auf einem lokalen System daheim aufsetzen und dort xdebug einrichten und damit Analyse/Diagnose betreiben. Manchmal kann ein kleines Script eine große Wirkung haben, zumindest war's in meinem Fall so. wink.gif

Falls du außerdem einen Shellzugriff hast, kannst du mit top (für Systemprozesse) und mytop (für mySQL-Prozesse) sehen, welche Prozesse viel Rechenkapazität benötigen.


--------------------
Hard- und Software News für PC-Enthusiasten- unsere News dürfen kopiert werden!
Top
PMEmail PosterUsers WebsiteICQ
Top
 
cr4m0
#13 Geschrieben am: Di 25.03.2008, 15:02 (+01:45)
Report PostQuote Post

AyomRank 4
********

Gruppe: Member (aktiv)
Beiträge: 126
Mitglied seit: 30.07.2007


OK, wenn ich mal einen eigenen Server habe, kann ich das nutzen. Im Moment habe ich ja noch Shared Hosting und kann das alles nicht nutzen.

Aber was haltet ihr davon, PHP-Seiten für eine bestimmte Zeit in HTML-Dateien als Cache zu speichern?
Beispiele:
- http://phpperformance.de/ausgaben-in-cache-speichern/
- http://sourceforge.net/projects/quickcache
Dadurch müssen die Seiten für eine bestimmte Zeit (z.B. 5 Minuten) nicht mehr "zusammengebaut" werden, dadurch muss der PHP-Parser nicht mehr laufen und es ist kein MySQL-Zugriff mehr nötig. Und in 5 Minuten ändern sich eh die wenigsten Seiten...
Top
PMEmail Poster
Top
 
hatschi1810
#14 Geschrieben am: Di 25.03.2008, 15:48 (+00:46)
Report PostQuote Post

AyomRank 6
Group Icon

Gruppe: Experten Entwicklung (Mod)
Beiträge: 597
Mitglied seit: 20.01.2004


So oft wie du nachfragst hättest du es testweise schon wo einbauen können ;-)

Auch bei Seiten die sich jedes mal ändern kannst du cachen, und zwar einfach die Teile, die sich nicht ändern. Klar bringt das war von Fall zu Fall was (immer schön testen und messen!).

Willst du die vom Besucher wahrgenommene Zeit verbessern kann ich übrigens das Tutorial von Yahoo empfehlen:
http://developer.yahoo.com/performance/rules.html
Top
PMEmail Poster
Top
 
cr4m0
#15 Geschrieben am: Di 25.03.2008, 16:29 (+00:40)
Report PostQuote Post

AyomRank 4
********

Gruppe: Member (aktiv)
Beiträge: 126
Mitglied seit: 30.07.2007


OK, ich hab's jetzt getestet! biggrin.gif
Das Caching funktioniert auf jeden Fall. Große Geschwindigkeitsvorteile gibt es nicht, aber auf jeden Fall wird ja die Server-Last reduziert. Denn jetzt müssen die Inhalte nur noch aus HTML-Dateien geladen werden und nicht mit einer MySQL-Verbindung geladen und zusammengesetzt werden.
Allerdings braucht man beim Caching viel Speicherplatz, da ja für jede einzelne Seite per Parameter auch eine eigene HTML-Datei erstellt wird.
Top
PMEmail Poster
Top
 
Thema wird von 0 Benutzer(n) gelesen (0 Gäste und 0 anonyme Benutzer)
0 Mitglieder:
Trackback-Url: http://www.ayom.com/track/t/23634

Topic Options Reply to this topicStart new topicStart Poll

 


> Ähnliche Themen
Wie kann ich Freebieking verbessern? Jan-Remmer Harms 462 19 So 4.05.2008, 08:55
MySQL PErformance steigern sd12 194 4 Do 21.02.2008, 19:15
Was kann ich noch verbessern? Marc3l 481 8 So 4.03.2007, 20:59
Ayom verbessern – Letzte Themen Sacha 1104 21 Do 1.03.2007, 11:45
Ebay Shop verbessern andi1976 552 11 Fr 12.01.2007, 02:48
Was kann ich bei meiner Seite verbessern webdoktor 901 16 Mo 8.01.2007, 16:35
Matlab Code verbessern Sina 432 5 Di 13.06.2006, 13:32
Performance-Einbussen durch stylesheet.css? Webi 341 4 Mo 29.05.2006, 09:12
(todo),2,Stopwort integration verbessern Urs 365 2 Di 29.11.2005, 01:02




Anzeige - [Interessiert an einer Anzeige?]


Anzeigen






 



[Interessiert an einer Anzeige?]