[Modul: Galerie] Dateibasierte Bilderabfrage bewirkt Serverlast

Begonnen von k00ni, 09. Juli 2007, 09:42:18

Vorheriges Thema - Nächstes Thema

Ich schätze mal, dass Powies Version deswegen langsamer ist, weil dort für jedes Item im Verzeichnis zusätzlich noch readdir() aufgerufen wird. Das sind dann gleich n Funktionsaufrufe mehr, wobei n = Anzahl der Items im Verzeichnis.

k00ni

Ähm, ich sehe da nicht so ganz durch, ehrlich gesagt.
 
0.00user 0.02system 0:00.03elapsed 93%CPU[/quote]
Was ist hier user, system und elapsed? Wo genau steht nun die \"richtige\" Zeit..?
 
Ich musste dein Skript übrigens fixen.[/quote]
Welche Stelle und warum?

Was ist hier user, system und elapsed? Wo genau steht nun die \"richtige\" Zeit..?[/quote]
Halte dich lieber an die aussagekräftigeren Daten von xdebug.
Welche Stelle und warum?[/quote]
Zeile 31 und 32. Die Array-Indices sind beim ersten Aufruf noch nicht da, also wirft PHP ein Notice.

k00ni

Halte dich lieber an die aussagekräftigeren Daten von xdebug.[/quote]
Würde ich ja gerne, wenn ich sie verstehen könnte. Welche Zeit ist denn nun ausschlaggebend von den dreien? Oder ist die Zeit irgendwo anders angegeben? Sorry, ich steh ich auf dem Schlauch.
 
Grüße

Oder ist die Zeit irgendwo anders angegeben?[/quote]
Die verbrauchte Zeit (Kosten) ist jeweils auf den Bildern in der Fußzeile angegeben. Das Flächendiagramm zeigt der prozentualen Anteil der verbrauchten Zeit (Kosten) pro Befehl.

k00ni

Ich habe eine Punktzahl von 122.175, Powie 111.341 und deine Lösung 88.496. Dann braucht mein Skript nun länger und ist somit langsamer als eure Lösungen?

Ich habe eine Punktzahl von 122.175, Powie 111.341 und deine Lösung 88.496. Dann braucht mein Skript nun länger und ist somit langsamer als eure Lösungen?[/quote]
Das ist nicht so einfach: Jeder Lauf passiert ja nicht singulär, denn es gibt ja auch noch andere Prozesse, weswegen nur ein Benchmark auch wenig aussagekräftig ist. Statistische Analysen sind dann erst http://de.wikipedia.org/wiki/Gesetz_der_gro%C3%9Fen_Zahlen\" rel=\"external nofollow\">aussagekräftig, wenn die http://de.wikipedia.org/wiki/Grundgesamtheit\" rel=\"external nofollow\">Population  groß genug ist.
Wenn Du dir die Grafiken anschaust wirst Du allerdings sehen, dass is_file eine teure Operation ist - genauso wie readdir. Es wäre also ratsam, eine andere Lösung zu finden.
 

k00ni

Ich habe gerade was in der php.net-Funktionsreferenz unter den Userkommentaren gefunden. So ist es beispielsweise performancesteigernd, wenn man mit relativen, statt mir absoluten Pfaden arbeitet. (http://de3.php.net/manual/de/function.is-file.php#59644\" rel=\"external nofollow\">Klick mich)
Mir fällt nichts weiteres ein, was man machen könnte um die Performance zu steigern. Erstmal will ich sehen, wie das Skript nach meinem Update läuft.
Weiterhin wird es wo darauf hinaus laufen, dass wir bei der Galerie mit Unterordnern fahren müssen. Einfach weil, denk ich, kein Betriebssystem tausende Dateien abfragen kann, ohne nicht stark gebremst zu werden. Es mag vielleicht für Großrechner oder Serverfarmen anders sein, aber wir haben hier sowas nicht. Aber das wird die Zukunft zeigen. Bisher läuft das noch sehr schnell und das Zählen der Dateien muss ja nicht ständig erfolgen, weshalb dass zu verkraften ist, wenn man mal 12 - 20 Sekunden warten muss.
 
Nächtliche Grüße

Ich habe gerade was in der php.net-Funktionsreferenz unter den Userkommentaren gefunden. So ist es beispielsweise performancesteigernd, wenn man mit relativen, statt mir absoluten Pfaden arbeitet.[/quote]
Das Globbing arbeitet mit relativen Pfaden.
Weiterhin wird es wo darauf hinaus laufen, dass wir bei der Galerie mit Unterordnern fahren müssen. Einfach weil, denk ich, kein Betriebssystem tausende Dateien abfragen kann, ohne nicht stark gebremst zu werden.[/quote]
Aber es gibt Filesysteme, die das besser können. So ist bsp. ReiserFS für viele kleine Dateien gut geeignet (NNTP/E-Mail). Was verwendet ihr?
Es mag vielleicht für Großrechner oder Serverfarmen anders sein, aber wir haben hier sowas nicht.[/quote]
Die Tests hier liefen auf einem Centrino-Notebook. Also auch kein echter Großrechner.

k00ni

Keine Ahnung, welches Dateisystem wir auf dem Server haben. Müsste der Powie mal schreiben. /uploads/emoticons/icon_e_wink.gif.3167d127940f44558fbf1ccd9b6d60a9.gif\" alt=\";-)\" />
Die Tests hier liefen auf einem Centrino-Notebook. Also auch kein echter Großrechner.[/quote]
Witzbold /uploads/emoticons/icon_e_surprised.gif.a8707b3f35a569cb4cfe563fc72ef78d.gif\" alt=\":-o\" />
Zur Zeit haben wir  15005 Files mit 929 MB. Jetzt braucht die Abfrage ja schon 20 Sekunden, was soll das dann bei der dreifachen Menge werden? Die Plattform lebt von Bildern, es ist ein Grundpfeiler, weshalb ich denke, dass wir dann schon etwas vorraus planen sollten.
Wie gesagt, die Seite \"Tool\" wird ja nur aller paar Tage aufgerufen, weshalb es eigentlich uninteressant wäre, aber was tut man nicht alles für 4 Sekunden Zeiteinsparung?! :ugly: /uploads/emoticons/icon_e_surprised.gif.a8707b3f35a569cb4cfe563fc72ef78d.gif\" alt=\":-o\" />
[edit] Die Tests liefen zwar auf deinem Notebook, aber du hast mir noch nicht die Zeiten verraten, nur Punktezahlen. (Wobei ich nicht  weiß, ob der Kandidat mit der höchsten Punktzahl auch gewonnen hat /uploads/emoticons/icon_e_wink.gif.3167d127940f44558fbf1ccd9b6d60a9.gif\" alt=\";-)\" /> ) [/edit]
Grüße
ps.: Hat Reiser nun eigentlich seine Frau umgebracht?!

Mal eine Zwischenfrage: Ist in psys die Einbindung des Galeriemoduls mehrfach parallel möglich? Dann gäbe es simple Lösungen...

k00ni

Klar, man müsste nur pro Skript ne eigene Tabelle machen bzw. sie so umstellen, dass sie synchron arbeiten. Und eben noch ein paar Pfade... Was schwebt dir denn vor?
 
Grüße

mahe

Ich nehme an pro Haupkategorie einmal pImg, oder so ähnlich.

http://blog.mahe.at\" rel=\"external nofollow\">http://blog.mahe.at/wp-content/uploads/2007/06/88x31_1.jpg\" alt=\"88x31_1.jpg\">


Ja, diese Signatur dient zur Werbung!


Und dass ich meine Posts wiederfinde ...


k00ni

Was bringt das?
Sollen die von einer Tabelle gespeist werden, aber getrennte Ordnerhierarchien haben? Wenn ja, dann bräuchte man einfach nur für jede Kategorie einen neuen Ordner erstellen.
Wenn nicht, wie wollt ihr dann die Verwaltung organisieren? Wo erhofft ihr euch Performancegewinne?
 
Grüße

Keine Ahnung, welches Dateisystem wir auf dem Server haben. Müsste der Powie mal schreiben.[/quote]

df -Th

 
 
Zur Zeit haben wir 15005 Files mit 929 MB. Jetzt braucht die Abfrage ja schon 20 Sekunden, was soll das dann bei der dreifachen Menge werden? Die Plattform lebt von Bildern, es ist ein Grundpfeiler, weshalb ich denke, dass wir dann schon etwas vorraus planen sollten.[/quote]
Vielleicht skalieren Powies Skripte da einfach schlecht. Mal zum Vergleich: Eines der Projekte, welches ich betreue, hat einige hunderttausend Bilder (und andere Multimedia-Clips) und hat keine Probleme. Da sind die Bilder aber auch über eine ID im Text referenziert und werden dann beim Rendern der Seite eingebunden. Das Ganze läuft auf einem Dual-Xeon-System so, dass sich das System langweilt. (Ok, da gibt es noch ein wenig C-Voodoo, was aber nicht wirklich relevant ist, Zugriff übrigens min. fünfstellig pro Tag).
Die Tests liefen zwar auf deinem Notebook, aber du hast mir noch nicht die Zeiten verraten, nur Punktezahlen. (Wobei ich nicht weiß, ob der Kandidat mit der höchsten Punktzahl auch gewonnen hat)[/quote]
Der Kandidat mit der niedrigsten Punktzahl gewinnt. Es war übrigens - nach 1000 Läufen - mein zweiter Entwurf mit dem direkten Globbing. Deiner folgte nach meinem ersten Entwurf an dritter Stelle.
Hat Reiser nun eigentlich seine Frau umgebracht?![/quote]
Ist dies für das Dateisystem irgendwie relevant?

all your base are belong to us / Discord