Hi,nach meiner Ansicht ist Variante 1 die geeignete. In erster Linie geht es ja darum die Speicherauslastung in Grenzen zu halten, damit nicht das komplette System ausgebremst wird.
Und bei genauer Betrachtung ist das Forken keine ressourcenfressende Angelegenheit. Man muss nur aufpassen, dass die geforkten Prozesse nach getaner Arbeit wieder korrekt beendet werden, damit Du keine Zombies im Prozessbaum hängen hast. Das lässt sich ja duch einen SignalHandler recht simpel machen.
Der Server sollte in jedem Falle so aufgebaut sein, dass Speicherbereiche, die nicht mehr benötigt werden, auch sofort wieder freigegeben werden, sprich "undef" setzen. Weiterhin sollte komplett auf lokale Variablen und Referenzen gesetzt werden. Auch wäre es nach meiner Ansicht sinnvoll, Objekte für das DatenHandling erst nach dem Fork einzubinden, nämlich dann wenn sie benötigt werden. So kannst Du den Server im Speicher schön schmal halten.
Außerdem würde ich zusehen, dass die temporäre Datenspeicherung (falls erforderlich) NICHT in /tmp passiert, sondern auf einer anderen Partition, die groß genug ist Temporärdaten von 400 Datenübertragungen aufzunehmen. Denn wenn /tmp voll läuft, kannst Dir vorstellen was passiert.
Wie das mit den Threads ist weiß ich ehrlich gesagt gar nicht. Ich habe selbst noch keine solche Anwendung programmiert. Ich denke hier wären Semaphoren ein geeignetes Mittel. Aber damit habe ich noch keine Erfahrung, sondern nur theoretisches Halbwissen.
-uw
Datum: 04.05.2006-13:00
