Pour inetd ou non inetd ... quand dois-je utiliser inetd pour mon programme de serveur de réseau?

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

  •  23-08-2019
  •  | 
  •  

Question

Quelqu'un peut-il donner un ensemble concis de considérations réelles qui pousserait le choix de utiliser inetd pour gérer ou non un programme qui agit comme un serveur de réseau?

(Si inetd est utilisé, je pense qu'il modifie les exigences autour de la mise en réseau du code dans le programme, donc je pense qu'il est lié programmation certainement et non générale IT)

La question est basée autour d'une mise en œuvre que j'ai vu qui utilise un programme de contrôle géré par inetd pour démarrer un écouteur de réseau qui fonctionne alors pour toujours et prend une charge constante et lourde. Il ne semble pas comme un bon ajustement avec le profil d'utilisation inetd manuel (sur demande, peu utilisé, léger) et je me suis intéressé à la question plus générale.

Était-ce utile?

La solution

Cela dépend du modèle d'utilisation de votre service. Si le temps de démarrage de votre démon est faible, et vous attendez qu'il soit peu utilisé, imé alors peut-être un bon ajustement. Il réduit ou élimine même le besoin d'écrire un code de réseau supplémentaire.

Si votre démon est plus lourd ou plus fréquemment utilisé, vous êtes probablement mieux écrire autonome. Vous pouvez simplement écrire aussi facilement un script init.d et une configuration de conf.d pour aller avec elle et il ne sera pas plus difficile pour un administrateur à gérer. La plupart des langages de programmation ces jours-ci ont facile à utiliser les bibliothèques socket donc dans de nombreux cas, le code de réseau peut même ne pas être si difficile.

Je l'ai trouvé dans mon expérience que peu admins ces jours-ci sont familiers avec inetd. La plupart des daemons fournissent tout simplement leur propre script d'initialisation. En fait, des quelques centaines de systèmes que je réussis, je ne peux pas penser à un seul qui lance quoi que ce soit à travers inetd du tout. C'est quelque chose à considérer.

Autres conseils

Accrochage en inetd fera votre service un peu plus facile à gérer à partir d'un point de vue opérationnel que inetd permet à un administrateur système de contrôler la quasi-totalité de la façon dont les communications réseau avec votre programme arrive. Cependant, il vous demandera de faire quelques changements de code à votre programme. En outre, il ne peut pas être aussi efficace que simplement rendre votre programme exécuté comme un démon pour commencer.

EDIT: J'utilise personnellement jamais inetd et toujours choisir d'écrire des processus de serveur en tant que daemons autonomes

.

Je pense qu'un autre facteur à considérer au moment de décider d'utiliser inetd est la quantité de mémoire qui traite la demande processus consomme en moyenne? Si cela est assez élevé, alors sous forte charge, vous risquez de manquer de mémoire (depuis fourches inetd). Le même serveur peut être mis en œuvre dans un multifil ou sélectionner-sondage manière permettant éventuellement de charge plus élevée / moins de mémoire par connexion.

Quelle stratégie alternative envisagez-vous?

inetd est un bon moyen d'assurer votre serveur démarre lors du démarrage du système d'exploitation dans le niveau d'exécution approprié. Même si vous concevez votre serveur pour avoir un autre mécanisme de gestion, inetd pourrait encore envelopper toutes les commandes tout simplement. Il est seulement des scripts shell après tout.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top