mmofacts.com

Apache: Worker oder Prefork?

gepostet vor 17 Jahre, 1 Monat von garyx7de
Was benutzt ihr? Das MPM Worker oder eher Prefork?
Welche Erfahrungen habt ihr mir Apache-Worker
gepostet vor 17 Jahre, 1 Monat von Drezil
prefork nutzt man doch eig nur, wenn die module nicht thread-safe sind, oder?
worker sind doch imho threads und daher schneller als einzelne prozesse ...
aber ich hab da nicht soviel erfahrung mit praktischen unterschieden. ich schau mir lieber die technik an und überlege, welche technik schneller laufen müsste (wenn die programmierer nicht allzuviel mist bauen..)
und das sind dann nunmal threads. Die kann man besser uber shared-memory (mit mutex-locks o.ä.) steuern, wohingegen eine pipe zwischen den threads schon aufwändiger ist (vom prozesswechsel mal ganz abgesehen..)
und je nach betriebssystem werden die threids auch vom kernel-scheduler verwaltet, sodass ein prozessinternes extra-scheduling auch nicht mehr vonnöten ist.
=> theoretisch sind threads immer schneller. Es muss nur ordentlich programmiert werden.
gepostet vor 17 Jahre, 1 Monat von garyx7de
jo gut das prefork nicht thread-safe ist, ist mir klar. Das doofe ist, ich find nichts über php und thread-safe und was alles passieren könnte wenn ich das worker mpm einsetze. Deswegen ja dieser Thread ich selber setze immer noch auf Prefork da ich noch selber keine erfahrung mit Worker gemacht habe aber am überlegen bin das endlich mal zu testen
gepostet vor 17 Jahre, 1 Monat von Drezil
der php-kern in der version 5 ist an sich thread-safe (ich weiss nicht, ob es ausnahmen gibt).
Nur php lädt Tonnen von Modulen nach (mysql, gd, pgsql, xml, pdo, ...) - je nach konfiguration. Und nicht jedes Modul ist thread-safe oder thread-safe kompiliert.
Die php-faq (obschon ziemlich alt), meinen:
de.php.net/manual/de/faq.installation.php#faq.installation.apache2
gepostet vor 17 Jahre, 1 Monat von open_dimension
Also ich finde die Frage auch interessant...
Ich habe auch Prefork und mich darüber geärgert. Aber es ist eben die Standard-Einstellung und die läuft für alle Konfigurationen...
Wenn ich mich recht erinnere muss der Worker einkompeliert werden, und das ist immer mit einigem Aufwand verbunden. Ich habe mich bei diesem unsicheren Ausgang dagegen entschieden dieses Experiment zu wagen.
Der Apache läuft auch so sehr performant.
gepostet vor 17 Jahre, 1 Monat von TheUndeadable
Nur als kurzes Feedback
Ich persönlich nutze PHP als ISAPI-Modul für den IIS (also multithreaded), habe aber noch keinerlei Probleme festgestellt.
Von Microsoft und PHP wird allerdings die Nutzung als FastCGI empfohlen, dazu war ich aber bisher noch zu faul. Und wo keine Not ist: Never change a running system.
gepostet vor 17 Jahre, 1 Monat von garyx7de
was kann denn überhaupt passieren wenn ich fragen darf bei dingen die nicht thread-safe sind?
gepostet vor 17 Jahre, 1 Monat von TheUndeadable
Merkwürdigste Abstürze aller Art, Sicherheitslücken und Fehlfunktionen.
Evtl auch Hänger und Sperren.
Threadingfehler sind nicht umsonst die meistgehassten Fehler.
Ansonsten google mal nach Wettlaufbedingungen (neudeutsch: Race conditions).
gepostet vor 17 Jahre, 1 Monat von unverbraucht
Am einfachste wäre es sicher, Apache mit Worker und PHP dann als fastcgi. Das ist nicht sonderlich schwer einzurichten und bietet die Performance-Vorteile vom Worker-MBM ohne Threading-Probleme.
Dann kann man allerdings auch gleich lighttpd oder litespeed web server antesten, wenn man auf FastCGI umstellt

Auf diese Diskussion antworten