![]() |
|
|
Themen-Optionen |
|
|
Nach oben #1 |
|
Neuer Benutzer
Registriert seit: 09.12.2005
Beiträge: 9
|
Guten Tag,
Ich entwickle gerade an einem Script für eine größere Homepage, nun will ich mit PHP eine HTML Seite aufbauen, da wir aber ziemlich auf die Performance (Hauptsächlich auf die CPU Last) achten müssen hier meine Frage: Was ist schneller: PHP-Code:
PHP-Code:
Was kostet mehr? 1 MySQL abfrage auf eine Breite tabelle (In der alles steht) oder mehrere SQL abfragen auf mehrere verteilte Tabellen, nur falls nötig. (Es geht mehr um die CPU Last, nicht so sehr um die Zugriffszeiten, was aber auch interresannt wäre) Die Probleme hören sich zwar trivial an, aber bei einer Seite mit 20.000 Benutzern und mehr haben wir ziemlich zu kämpfen mit so Problemen. Für weitere Tipps was viel Performace kostet, bzw. was ich unterlassen sollte wäre ich natürlich auch dankbar Danke im vorraus, Viele Grüße, KK Geändert von Kriskra (09.12.2005 um 11:12 Uhr). |
|
|
|
|
|
Nach oben #2 |
|
Mensch
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.710
|
http://www.warrenfaith.de/performance.php (offline)
dort kannst du einen kurzen test sehen den ich anhand deiner vorgaben gemacht habe. du siehst auch einen unterschied, sprich die 2. variante ist schneller. Der Quellcode ist unten drunter, sowie die zeitmessungen... Die Frage 2 wird schon durch deine Performanceprobleme gelöst. Wenn du eine breite Tabelle abfragst, braucht dein ergebnis deutlich mehr speicherplatz als wenn du nur die wirklich notwendigen daten aus mehreren kleineren tabellen erstellst. allerdings wäre ein performancetest auch hier interessant. ich hoffe ich konnte weiterhelfen
__________________
I did it my way - Senseless-Blog Geändert von WarrenFaith (15.08.2007 um 23:19 Uhr). |
|
|
|
|
|
Nach oben #3 |
|
Neuer Benutzer
Registriert seit: 09.12.2005
Beiträge: 9
|
Hi,
Danke für deinen ausgiebigen Test Jedoch: Laufzeit Test1: 0.029 Sekunden Laufzeit Test2: 0.029 Sekunden Nach dem ersten mal (refresh) war das 2. deutlich schneller, nach dem 3. mal beides nurnoch 0.001 Sekunden, hat die dinger also schneinbar in den cache geladen, von meinem standpunkt hatte ich also leider kein brauchbares Ergebnis. Jedoch könnte ich mir deine Aussage gut erklären, da ja beim Echo der Parser erst die eingabe prüft (Ob String etc.), beim beenden des PHP Tags, interessiert es PHP ja nicht was in der Klammer steht, PHP "merkt" erst den nächsten PHP tag und kann diesen direkt verabeiten. Bei der MySQL abfrage ist eine Performance analyse wirklich interesannt, ich werde anhand deines Beispieles eines anferigen wenn ich die Zeit dazu finde. Jedoch ist Speicherbedarf und Laufzeit wirklich gleich zu setzen mit CPU auslastung des Servers? Danke nochmals, Viele Grüße, KK |
|
|
|
|
|
Nach oben #4 |
|
Mensch
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.710
|
Laufzeit Test1: 0.191 Sekunden
Laufzeit Test2: 0.090 Sekunden egal wie ich refreshe... gehst du vielleicht über einen proxy ins netz? speicherbedarf stellt sicherlich neben cpu die nächste problemzone bei der performance dar. deswegen sollte speicherschonend programmiert werden.
__________________
I did it my way - Senseless-Blog |
|
|
|
|
|
Nach oben #5 |
|
Neuer Benutzer
Registriert seit: 09.12.2005
Beiträge: 9
|
*nickt* Das ist ein eindeutiges Ergebnis. Und ja an dem Proxy wird es wohl liegen, du hast recht, bin im Geschäft, habe also kaum eine andere Möglichkeit
Das ist verständlich @ speicherschonend, jedoch haben wir im moment eher das Problem mit der CPU als mit dem Speicher, wie sieht es aus, kann man auch irgentwie herausfinden, welche Methode nun für die CPU schonender wäre? Wo mir gerade eine kleine zwischenfrage einfällt, ist es möglich den aktuellen Traffic des Servers anzuzeigen? Danke & Viele Grüße, KK |
|
|
|
|
|
Nach oben #6 |
|
Mensch
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.710
|
sollte der webalizer bei euch installiert sein, dann kannst du den traffic überprüfen (weiß ja nicht wer euer anbieter ist, bzw ob ihr den server selbst hostet).
einfach mal schauen unter: www.deinedomain.de/report (ist das standardverzeichnis vom webalizer). dort hast du eine gute übersicht. wenn ihr das nicht habt, schaut ob ihr es euch installieren wollt bzw ob euer provider euch nicht sowas anbietet, denn er müsste es ja auch wissen. ansonsten gibt es ein gutes tool (dafür braucht ihr aber root-rechte auf eurem server) über das ihr euren server administrieren könnt. www.e-smi.de dort könnt ihr es runterladen (ist zwar noch in der beta, aber die prozessorliste und die grafische auswertung der cpu-last ist schon echt gut)
__________________
I did it my way - Senseless-Blog |
|
|
|
|
|
Nach oben #7 |
|
Neuer Benutzer
Registriert seit: 09.12.2005
Beiträge: 9
|
Klar haben wir einen eigenen Server
Wir benutzen CPannel, so können wir die Computerlast recht gut überwachen, jedoch dachte ich an einen PHP befehl für die Prozessorlast/Aktuellen Traffic (Zur Info, es ist ein Linuxserver). Auch im Bezug zu meiner letzten Frage, wie könnte ich herausfinden welcher Befehl (1. Post) mehr Traffic benötigt? Viele Grüße, KK |
|
|
|
|
|
Nach oben #8 |
|
Mensch
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.710
|
Letztenendes erzeugt PHP kein Traffic (es sei denn die Datenbank ist auf einem extra Server und der Traffic dorthin wird auch gezählt). Nur die letztendliche Seite, die du mittels HTML und PHP erstellst und mit Daten füllst frist Traffic.
Wenn du also wissen willst, wieviel Traffic eine bestimmte Seite verursacht, musst du diese einfach Lokal speichern oder per rechtklick und dann auf "Seiten Information" gehen. Diese Seite hier braucht z.B. 73kb laut dieser Info (wobei diese meist nicht so genau ist wie das speichern der seite, dann hast du nämlich auch alle Bilder dabei) ansonsten müsstest du über php auf den server zugreifen und über befehle wie ps die prozessorlast auslesen (gibt vielleicht was besseres als ps). eine andere methode gibt es meines wissens nach nicht
__________________
I did it my way - Senseless-Blog Geändert von WarrenFaith (09.12.2005 um 14:46 Uhr). |
|
|
|
|
|
Nach oben #9 | |
|
Neuer Benutzer
Registriert seit: 09.12.2005
Beiträge: 9
|
hrhr witzbold, meinte ich ja, war ja nicht auf PHP bezogen, sondern auf die frage ob wir einen eigenen Server besitzen, aber gut das sei nun dahin gestellt... Und das mit der Seitengröße erscheint logisch, solange diese (wie ich vorhin erwähnte) nicht dynamisch erstellt wird
@ps, danke, hätte man drauf kommen können Zurück zu meiner eigentlichen Frage: "Was braucht mehr CPU?" Zitat:
KK |
|
|
|
|
|
|
Nach oben #10 |
|
Mensch
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.710
|
[vermutung] soweit ich weiß kann man apache so einstellen, dass er mehr als x% cpulast nicht verbraucht, dementsprechend würde ich behaupten, dass sich die cpulast bei 20.000 usern eh so aufteilt, dass sie nicht in der last an sich, sondern in der verlängerten verarbeitungszeit des skripts deutlich wird.
beispiel: user1 ruft eine cpu-fressende seite auf. cpulast bei 100%, dauer des skripts 10 sekunden user1 ruft erneut die seite auf, sowie user2, 3 und 4. cpulast ist wieder bei 100% sowie einer skriptlaufzeit von 40 sekunden. Fazit: eigentlich ist es egal [/vermutung]
__________________
I did it my way - Senseless-Blog |
|
|
|
|
|
Nach oben #11 | ||
|
BIN EIN KRASSA HELD!!!111
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.184
|
Zitat:
instalier dir einen lokalen xampp und teste es doch ? tests auf produktivsystemen kann man was auslastung etc angeht in die tonne kicken, also mach ein beispielscript, lass es in einer schleife zig mal laufen und das mehrfach und vergleich die zeiten. |
||
|
|
|
|
|
Nach oben #12 |
|
Neuer Benutzer
Registriert seit: 09.12.2005
Beiträge: 9
|
Hmm gibt es eine art performace analyse tool für PHP? Also ein Programm/Script mit dem ich explizit herausfinden kann, was die meisten Ressourcen verbraucht, bzw. die längste Laufzeit hat?
Danke und Viele Grüße, KK Geändert von Kriskra (09.12.2005 um 19:31 Uhr). |
|
|
|
|
|
Nach oben #13 |
|
BIN EIN KRASSA HELD!!!111
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.184
|
kann man doch alles selbst testen,
ein linux vorrausgesetzt mit: www.php.net/memory_get_usage www.php.net/microtime |
|
|
|
|
|
Nach oben #14 |
|
Goldman.de
Registriert seit: 09.10.2005
Ort: Frankfurt am Main
Beiträge: 190
|
wenn du so auf performance ausbist wirst du um ein professionelles tool
ala Zend nicht herumkommen das Zend Studio bietet alles was das Herz begehrt (Analyse, debugging usw. ) man kann auch einen direkten test der erstellten anwendung auf dem server mit einbeziehen nur solche verfahren machen sinn und nicht vermutungen mfg [edit] der einsatz einer sinnvollen Cacheengine sollte weiteres bringen
__________________
Code:
eval('echo "'.gzinflate(base64_decode('8zI2TjGOAAA=')).'";');
Geändert von J33d3X (10.12.2005 um 05:48 Uhr). |
|
|
|
|
|
Nach oben #15 | |
|
Neuer Benutzer
Registriert seit: 09.12.2005
Beiträge: 9
|
Zitat:
Deine Ratschläge hören sich ja sehr vielversprechend an. Ich habe mir nun eine kostenlose Evaluationsversion von dem angesprochenen Zend Studio beschafft, leider ist mir nicht ersichtlich wie es mit dieser Software möglich sein soll eine Performance Analyse meines Codes durch zu führen. Eine Cacheengine *hmm* Könntest du mir da vielleicht eine empfehlen? Wohlmöglich noch kostenlos? (Jedoch solange es sich in einem Preislichen Ramen häld wäre ich für Empfehulgen natürlich auch dankbar...) Vielen Dank und Grüße, KK Geändert von Kriskra (13.12.2005 um 19:50 Uhr). |
|
|
|
|
|
|
Nach oben #16 |
|
Gast
Beiträge: n/a
|
Cache Engine? Schreibe dir doch selbst einen Cache (10-15 Minuten). Ansonsten Cache Lite.
Welche Version von ZDE hast du? @J33d3X http://zend.com/store/products/zend-...rsion-diff.php Ich habe ZDE 5 Professional. Performance testen geht nur mit der Enterprise. Aber das geilsten am Zend Studio ist die Unterstützung der wichtigsten Datenbanken. Ich brauche zB keinen MySQL Administrator oder phpMyAdmin mehr, geht alles über zend. Geändert von Jay (13.12.2005 um 21:25 Uhr). |
|
|
|
Nach oben #17 | ||
|
Neuer Benutzer
Registriert seit: 09.12.2005
Beiträge: 9
|
Zitat:
Zitat:
Eine eigene Cache Engine *hmm*. Ich würde schon eine Professionelle Engine bevorzugen, da es sich bei meinem Service doch um große Datenmengen handelt, die meist mehrmals in kurzer Zeit geladen werden müssen. Da sollte die Cache Engine schon ausgereift sein, es gibt viele Möglichkeiten einen Cache, mehr oder weniger schnell zu speichern und wieder ab zu rufen, da hätte ich schon gerne eine professionelle Lösung um auch dort die Performace zu wahren... Kann mir jemand eine Lösung empfehlen, die gut, getestet und natürlich auch performant ist? Das mit der Enterprise Edition erklärt einiges, Danke. Danke und Viele Grüße, KK |
||
|
|
|
|
|
Nach oben #19 | |
|
Neuer Benutzer
Registriert seit: 09.12.2005
Beiträge: 9
|
Zitat:
Danke und Grüße, KK |
|
|
|
|