phpbar.de logo

Mailinglisten-Archive

[php] AW: [php] Daten im Hauptspeicher, File oder DB schneller?

[php] AW: [php] Daten im Hauptspeicher, File oder DB schneller?

Hartmut Holzgraefe hartmut_(at)_six.de
Wed, 08 Nov 2000 18:42:29 +0100


Kar-Wing Lau wrote:
> Merkwürdig ist das schon, da alle mir bisher sagten, dass MySQL so schnell
> ist, dass man es kaum bemerken würde. Das dachte ich auch, als wir Tests
> fuhren und diese einen winzig kleinen Tick schneller waren. Erst später habe
> ich das mit der .CGI- und der Modul-Version gelesen. Also waren das
> anscheinend nur zufällige Streuungen. Anscheinend profitieren unsere Skripte
> durch einen einzigen verwendeten MySQL-Tripel  derart enorm, so dass es zu
> solch drastischen Ergebnissen kommt.

viel mehr als der MySQL-Connect fällt heir vermutlich der Aufwand für
die 
Ausführung des CGI ins Gewicht

für jeden Request passiert folgendes:

  - das Betriebssystem muß einen neuen Prozess anlegen und
initialisieren
  - ... das PHP Executable laden
  - PHP initialisiert sich
  - ... und alle seine Module
  - Request wird ausgeführt
  - PHP de-initialisiert alle Module
  - ... und sich selbst
  - das Betriebsystem entsorgt den Prozess
  - dazu kommt noch die Datenübergabe vom und zum Webserver

bei einem Servermodule, egal ob multithreaded wie beim ISAPI oder 
multiporcess wie beim UNIX-Apache, entfallen dagegen 

  - das Anlegen und Entfernen eines Prozesses durch das Betriebsystem
  - das Laden des PHP Executables
  - die Datenübergabe zwischen Webserver und Unterprozess
  - und die Initialisierung von PHP und seinen Modulen

die Verteilung von Requests auf mehrere Prozesse statt mehrerer Threads
beim UNIX-Apache bringt je nach Scheduler Performancevorteile und
schützt
vor Abstürzen und Speicherlecks, da die einzelnen Serverprozesse sich
keinen gemeinsamen Speicher teilen (und so auch nicht gemeinsam
abstürzen)
und nach einer definierten Anzahl von Requests terminieren und durch 
'frische' Prozesse ersetzt werden (so können Memory Leaks nicht
allzusehr 
durchschlagen, sozusagen Garbage Collection auf die harte Tour).

Nachteil der Verteilung auf mehrere Prozesse ist, das diese sich
bestimmte
Resourcen wie z.B. Datenbank-Connects nicht teilen können und man sich
nicht
darauf verlassen kann, das alle Requests eines Benutzers von demselben 
Prozess bearbeitet werden ...

--
Hartmut Holzgraefe  hartmut_(at)_six.de  http://www.six.de  +49-711-99091-77 

Besuchen Sie uns auf der Systems   in München  , Halle  C2, Stand 126


php::bar PHP Wiki   -   Listenarchive