Per inetd o non inetd ... quando dovrei usare inetd per il mio programma server di rete?

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

  •  23-08-2019
  •  | 
  •  

Domanda

Qualcuno può dare una serie di considerazioni concisa del mondo reale che guiderebbe la scelta se utilizzare o meno inetd per gestire un programma che agisce come un server di rete?

(Se si usa inetd, penso che altera i requisiti di rete in tutto il codice nel programma, quindi penso che è sicuramente relative alla programmazione e non generali IT)

La domanda si basa su un'implementazione ho visto che utilizza un programma di controllo gestito da inetd per avviare un listener di rete che poi corre sempre e prende carico costante e pesante. Non mi sembrava una buona misura con il profilo di utilizzo manuale inetd (on-demand, raramente utilizzato, leggero) e mi ha interessato alla questione più generale.

È stato utile?

Soluzione

Dipende dal modello di utilizzo per il vostro servizio. Se il tempo di avvio per il demone è basso, e ci si aspetta di essere utilizzato di rado, poi INTED potrebbe essere una buona misura. Si riduce o addirittura elimina la necessità di scrivere codice di rete aggiuntivo.

Se il demone è più pesante o più frequentemente utilizzate, si è probabilmente meglio scriverlo autonomo. Si può altrettanto facilmente scrivere uno script init.d e alcune configurazioni conf.d per andare con esso e sarà non è più difficile per un amministratore per gestire. La maggior parte dei linguaggi di programmazione in questi giorni hanno facile da usare librerie presa così in molti casi il codice di rete non può essere ancora così difficile.

Ho trovato nella mia esperienza che pochi amministratori in questi giorni hanno familiarità con inetd. La maggior parte dei demoni di fornire il proprio script di inizializzazione. Infatti, delle poche centinaia di sistemi che gestisco io non riesco a pensare a una sola che lancia nulla attraverso inetd a tutti. Questo è qualcosa da prendere in considerazione.

Altri suggerimenti

Collegamento in inetd renderà il vostro servizio un po 'più facile da gestire da un punto di vista operativo come inetd permette ad un amministratore di sistema per controllare praticamente tutti come comunicazioni di rete con il vostro programma succede. Tuttavia esso richiede di apportare alcune modifiche al codice al vostro programma. Inoltre, potrebbe non essere efficiente come solo facendo il vostro programma eseguito come un demone per cominciare.

EDIT: Io personalmente non uso mai inetd e sempre optare per scrivere i processi server standalone come demoni

.

Credo che un altro fattore da prendere in considerazione quando si decide di utilizzare inetd è la quantità di memoria che gestisce la richiesta di processo consuma in media? Se questo è piuttosto alto, quindi sotto carico elevato si rischia di esaurimento della memoria (dal forchette inetd). Lo stesso server potrebbe essere implementabile in un multithreading o selezionate-poll maniera possibilmente consentendo maggiore carico / meno memoria per connessione.

Cosa strategia alternativa stai pensando?

inetd è un buon modo per garantire il server inizia quando gli stivali OS nel livello di esecuzione appropriato. Anche se non progettare il vostro server per avere qualche altro meccanismo di gestione, inetd potrebbe ancora avvolgere tutti i comandi semplicemente. E 'solo script di shell, dopo tutto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top