Superserver
Ein Superserver ist ein Serverprozess, der viele Ports überwacht und beim Eintreffen eines Client-Requests den zuständigen Serverdienst startet. Hat dieser Server seine Aufgabe für diese Anfrage erledigt, wird er beendet.
Inetd ist ein bekanntes Beispiel für einen Superserver bei Unix-Systemen. Die Zuordnung der Netzwerkdienste zu den Portnummern erfolgt in der Datei /etc/services.
Vorteile
Im klassischen Ansatz überwacht ein Serverprozess einen Port. Bei vielen Ports sind also viele Prozesse im Wartezustand und verbrauchen dabei Systemressourcen, vor allem Arbeitsspeicher. Beim Superserver-Ansatz wird nur der vergleichsweise kleine Server vorgehalten, was weniger Arbeitsspeicher bei inaktiven Serverdiensten benötigt.
Viele Superserver sind dahingehend konfigurierbar, dass
- Zugriffe nur von bestimmten Adressen aus möglich sind,
- Dienste unter bestimmten Benutzern gestartet werden können,
- Schwellwerte für gestartete Prozesse absolut als auch pro Zeit eingestellt werden können.
Zudem ermöglicht der Superserver eine vereinfachte Programmierung der Serverdienste, da er für jede eingehende Verbindungsanforderung einen eigenen Prozess startet. Der Programmierer braucht sich um diese Einzelheiten innerhalb seines Programmes nicht zu kümmern.
Nachteile
Für das Starten des jeweiligen Servers wird Zeit benötigt, was die Reaktionszeit bis zur Verfügbarkeit des Netzwerkdienstes entsprechend erhöht. Bei vielen kurzen Verarbeitungen wird auf dem System dadurch mehr Last generiert als mit einem bereits wartenden Verarbeitungsprozess.
Literatur
- Andrew S. Tanenbaum, Marten Van Steen: Distribute Systems – Principles and Paradigms. Pearson Prentice Hall, Upper Saddle River 2007, ISBN 0-13-239227-5.