[Vienna-pm] anmerkungen ..

Bernd Petrovitsch bernd at firmix.at
Mon May 28 09:53:22 PDT 2007


On Mon, 2007-05-28 at 18:29 +0200, Peter J. Holzer wrote:
[...]
> Da ist existiert das Problem, dass der Server nie mehr schrumpft ja
> meistens nicht: Der Parent-Prozess macht nichts außer accept und fork,
> und bleibt damit schön klein, die Kindprozesse sterben sobald der Client
> disconnected und geben damit jeden Speicher, den sie hatten, wieder
> frei.

Tatsächlich ist das die einzig mir bekannte Methode, temporären großen
Speicher wieder loszuwerden (z.B. macht der Daemon genau einmal täglich
irgendwas speicherfressendes): Vorher fork()en und den Worker-Prozeß
entsorgen, wenn man ihn nicht mehr braucht bzw. der Worker fertig ist.

[...]
> Speicher fressen. Mit der "externe-Programme mittels system starten, um
> die Arbeit zu machen"-Methode hast Du aber genau die verschachtelten
> forks: Zuerst forkt der Server, wenn er eine neue Connection erhält,
> dann forkt das Kind für jeden File-Request, und das Enkelkind exect dann
> cat bzw. zip (und wenn Du nicht aufpasst, hast Du eine Shell auch noch
> dazwischen).

Wenn das perl system() intern das libc system(3) aufruft, wird man das
gar nicht verhindern können.

	Bernd
-- 
Firmix Software GmbH                   http://www.firmix.at/
mobil: +43 664 4416156                 fax: +43 1 7890849-55
          Embedded Linux Development and Services



More information about the Vienna-pm mailing list