Inetd oder nicht an inetd ... wann soll ich inetd für mein Netzwerk-Server-Programm verwenden?

StackOverflow https://stackoverflow.com/questions/390847

  •  23-08-2019
  •  | 
  •  

Frage

Kann mir jemand einen prägnanten Satz von realen Erwägungen geben, die die Wahl, ob oder nicht verwenden inetd fahren würde, ein Programm zu verwalten, die als Netzwerk-Server fungiert?

(Wenn inetd verwendet wird, halte ich es für die Anforderungen verändert Code in dem Programm rund um die Vernetzung, so dass ich denke, es ist auf jeden Fall der Programmierung bezogenen und nicht allgemein IT)

Die Frage basiert auf einer Implementierung die ich gesehen habe, dass ein Steuerprogramm von inetd verwaltet verwendet ein Netzwerk-Listener zu starten, die dann für immer läuft und nimmt konstant und schwere Last. Es schien nicht wie eine gute Passform mit dem inetd Nutzungsprofil Lehrbuch (On-Demand, selten verwendete, leicht) und hat mich interessiert die allgemeinere Frage.

War es hilfreich?

Lösung

Es hängt von den Nutzungsmustern für Ihren Dienst. Wenn die Startzeit für Ihren Daemon niedrig ist, und Sie erwarten, dass es selten verwendet werden, inted dann könnte eine gute Passform. Es verringert oder sogar beseitigt die Notwendigkeit, zusätzlichen Netzwerk-Code zu schreiben.

Wenn Ihr Dämon mehr Schwergewicht oder häufiger verwendet wird, sind Sie wahrscheinlich besser dran, es Standalone zu schreiben. Sie können genauso gut einen init.d Skript und einige conf.d Konfiguration schreiben mit ihm zu gehen, und es wird nicht schwieriger für ein Admin zu managen. Die meisten Programmiersprachen haben in diesen Tagen einfach Socket-Bibliotheken zu verwenden, so in vielen Fällen ist die Netzwerk-Code nicht einmal so schwierig sein kann.

Ich habe in meiner Erfahrung festgestellt, dass einige Admins in diesen Tagen mit inetd vertraut sind. Die meisten Daemons bieten nur ihre eigenen Init-Skript. In der Tat, der die wenigen hundert Systeme, die schaffe ich ich nicht von einem einzigen man denken kann, dass überhaupt etwas über inetd startet. Das ist etwas, eine Überlegung wert.

Andere Tipps

Einhaken in inetd wird Ihren Dienst etwas einfacher zu verwalten aus operativer Sicht machen als inetd ein Sysadmin ermöglicht praktisch zu steuern alle, wie die Netzwerkkommunikation mit Ihrem Programm passiert. Allerdings wird es Sie benötigen ein paar Code-Änderungen an Ihrem Programm zu machen. Auch kann es nicht so effizient wie gerade Ihr Programm ausführen als Daemon sein zu beginnen.

EDIT: Ich persönlich nie inetd verwenden und immer Server-Prozesse als eigenständiger Daemons opt schreiben

.

ich denke, ein weiterer Faktor eine Überlegung wert, bei der Entscheidung, inetd zu verwenden ist, wie viel Speicher der Prozess die Anforderung im Durchschnitt verbraucht der Handhabung? Wenn dies ziemlich hoch ist, dann unter hohen Lesen Sie aus dem Speicher Gefahr zu laufen (da inetd Gabeln). Der gleiche Server könnte implementierbar sein möglicherweise in einem multithreaded oder wählen-Umfrage Weise für höhere Belastung / weniger Speicher pro Verbindung möglich ist.

Was alternative Strategie erwägen Sie?

inetd ist ein guter Weg, Ihren Server zu gewährleisten, beginnt, wenn das Betriebssystem startet in der entsprechenden Ausführungsebene. Auch wenn Sie Ihren Server entwerfen einen anderen Management-Mechanismus zu haben, könnte inetd noch ganz einfach alle Befehle wickelt. Es ist nur Shell-Skripte, nachdem alle.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top