PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : warum wird httpd geforkt?



m0rPhY
19.06.04, 12:16
ich weiß die frage ist vieleicht ein wenig blöde aber warum wird httpd geforkt?
muss das plausiebel erklären können

Schärple
19.06.04, 12:20
Jeder Client erhält seinen eingenen Thread (fork(httpd)). Das ist eine Möglichkeit um *quasi* parallel zu programmieren (sehr vorteilhaft, wenn nicht jeder Client erst warten muss, bis der Server alle Aufträge erledigt hat). Unteranderem wird durch diese art zu programmieren die Skalierbarkeit erheblich verbessert.

steam
19.06.04, 12:22
mich wurde es auch interresieren :)

m0rPhY
19.06.04, 12:25
d.H. also jeder prozess httpd steht für einen client?

geronet
19.06.04, 12:29
Nein. In der Konfigurationsdatei kann man angeben wieviele Clients auf einen httpd-Prozess kommen, meist so 250 glaub ich.

Näheres erfährst du z.B. bei einem Apache mit http://<servername>/server-status, falls es aktiviert ist.

Grüsse, Stefan

Schärple
19.06.04, 12:30
Fast, es gibt nur einen Prozess (Vaterprozess), welcher dann Threads (leichte Kinderprozesse) erstellt. Threads sind keine "schweren Prozesse", sondern werden "leichte Prozesse" genannt, da für Sie nicht der Speicherbereicht kopiert und neu allokiert wird. Sie greifen auf einen gemeinsamen Adressraum zu. Prozesse ohne "eigenen" Adressraum nennt man also Threads. Im Falle vom httpd sind es Threads.

m0rPhY
19.06.04, 12:33
aber hier in meiner prozessliste is doch irgendwie kein vater prozess oder?
dachte eigentlich man erkennt ihn...

Schärple
19.06.04, 12:38
aber hier in meiner prozessliste is doch irgendwie kein vater prozess oder?
dachte eigentlich man erkennt ihn...

Du musst die hierachische Ansicht aktivieren: ps -eH

m0rPhY
19.06.04, 12:40
ahso danke du hast mir sehr geholfen ;) also
zusammenfassend ist zu sagen die threads machen den webserver performanter für die clients?

Schärple
19.06.04, 12:42
ahso danke du hast mir sehr geholfen ;) also
zusammenfassend ist zu sagen die threads machen den webserver performanter für die clients?

Ehm, kommt darauf an, bei wem Du mit diesem Satz argumentieren willst. ;) Ich denke mein Professor wär da nicht so zufrieden mit. Aber im Großen und Ganzen ja.

m0rPhY
19.06.04, 12:49
vor nem prüfungsausschuss *gg*

geronet
19.06.04, 12:53
ahso danke du hast mir sehr geholfen ;) also
zusammenfassend ist zu sagen die threads machen den webserver performanter für die clients?

Kann man doch so sagen, da die threads kaum eigenen Speicher belegen und somit Raum für mehr von ihnen und für Cache vorhanden ist.

Schärple
19.06.04, 13:00
Bring die parallalität ins Spiel, Die ist nämlich der Grundgedanke (parallele Algorithmen) dahinter.