PHP Performance

ZockerLordLP

Erfahrenes Mitglied
Hallo Community

Wie sieht es mit der Performance aus, wenn ich z.B. 400 Einträge in einer DB, die ich jeweils in 15 Einträge aufteile und diese mit exec an ein anderes PHP Script weitergebe. Jeder Eintrag braucht ca. 2 Sekunden.

Wie sieht es mit der Performance aus?
 
Eine Messung hast du ja bereits gemacht. Ergo
(400/15)*2 ~ 54 Sekunden.

Aber warum mit exec weitergeben?
 
@Yaslaw
Weil ich so aufteilen möchte, damit das Script nicht so lange läuft. Deswegen wollte ich es aufteilen.

Achja deine Rechnung ist falsch:
Ein Script wäre:
400*2 = 800 Sekunden laufzeit

Wenn ich es aufteile
400/15= 26 PHP Instanzen auf dem Server die jeweils 15*2 = 30 Sekunden laufen :)

Deswegen wollte ich wissen, ob es für einen VServer mit 2x3Ghz+ 2GB Ram es zu viel ist mit 26 Instanzen. Ich vermute mal nicht, da es so ist als wenn 26 Besucher auf der Webseite sind.
Oder irre ich mich?
 
Du kannst das aber nicht so rechnen, dass die Operation insgesamt dann in 30 Sekunden über die Bühne ist, wenn sie sonst 800 braucht. Ich denke, mit deiner Idee machst du wenig mehr, als dein Setup zu verkomplizieren.
 
@mermshaus

Wieso sollte es nicht gehen?
Wenn 1 User die Seite aufruft und alles alleine macht dauert es länger als wenn 30 Leute sich die Arbeit aufteilen.
Da genug Rechenleistung zur Verfügung steht, sollte es eig. doch kein Problem sein. Bei einem Script ca. 0.5-1% (inc. System)

Wenn bei der 1 Script Option allerdings die Rechenleistung voll ausgeschöpft ist, dann hast du Recht, dann können es 30 Scripte auch nicht schneller.
 
Ich weiß natürlich nicht, was du in deinem Skript machst, aber wenn der Flaschenhals etwa die Kommunikation mit dem Datenbanksystem ist, dann wird das die Anfragen von 30 Skripts auch nicht schneller abarbeiten können als die von einem. Caching und so mal außen vor, die Anfragen dürften halt einfach serialisiert abgearbeitet werden.

Wenn du glaubst, dass das Skript nicht die Rechenpower verwendet, die es verwenden könnte, würde ich erst mal dort ansetzen und vielleicht die Priorität des Prozesses auf OS-Ebene erhöhen.

- https://en.wikipedia.org/wiki/Nice_(Unix)

Ich bin aber nicht sicher, ob das für dich der richtige Ansatz ist. Da fehlt einfach der Gesamtüberblick.

Wenn du auf einem Dual-Core-System durch Parallelisierung von Prozessen irgendwas um Faktor 20 an Geschwindigkeit rausholst, ist das für mich zumindest ein starker Indikator, dass das ursprüngliche Skript sehr ungünstig – ich sage mal – konfiguriert war.

PS: Es würde mich ehrlich gesagt überhaupt nicht wundern, wenn die Geschichte durch die Umprogrammierung unterm Strich sogar langsamer würde. (Von „bewussten“ Fehlkonfigurationen natürlich abgesehen. Jetzt nur auf den Code bezogen.) Es kommt eben einiger Overhead hinzu, es sind vermutlich mehr DB-Anfragen, es müssen Aufgaben synchronisiert werden, …
 
Zuletzt bearbeitet:
Zurück