Para inetd o no a inetd ... cuando debería utilizar inetd para mi programa de servidor de red?

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

  •  23-08-2019
  •  | 
  •  

Pregunta

Puede alguien dar un conjunto conciso de las consideraciones del mundo real que conduciría a la elección de si usar o no inetd para manejar un programa que actúa como un servidor de red?

(Si se utiliza inetd, creo que altera los requisitos de todo el código de red en el programa, por lo que creo que está relacionado de programación definitivamente y no general TI)

La pregunta se basa en una aplicación que he visto que utiliza un programa de control gestionado por inetd para iniciar un oyente de red que se ejecuta a continuación, siempre y toma de carga constante y pesado. No parecía como un buen ajuste con el perfil de uso de libros de texto inetd (bajo demanda, utiliza con poca frecuencia, de peso ligero) y me interesó en la cuestión más general.

¿Fue útil?

Solución

Depende del patrón de uso de su servicio. Si el tiempo de inicio de su demonio es baja, y se espera que sea utilizado con poca frecuencia, entonces INTED podría ser una buena opción. Se reduce o incluso elimina la necesidad de escribir ningún código adicional de la red.

Si su demonio es más pesado o usado con más frecuencia, que es probablemente mejor de escribirlo independiente. Puede acaba de escribir tan fácilmente una secuencia de comandos de configuración y algunos init.d conf.d para ir con ella y va a ser no es más difícil para un administrador de manejar. La mayoría de los lenguajes de programación en estos días tienen fácil de usar bibliotecas de socket por lo que en muchos casos el código de red puede incluso no ser tan difícil.

He encontrado en mi experiencia que algunos administradores de estos días están familiarizados con inetd. La mayoría de los demonios simplemente proporcionan su propio script de inicio. De hecho, de los pocos cientos de sistemas que me las arreglo yo no puedo pensar en una sola que lanza nada a través de inetd en absoluto. Eso es algo que vale la pena considerar.

Otros consejos

enganchar en inetd hará que su servicio un poco más fácil de manejar desde un punto de vista operativo como inetd permite que un administrador de sistemas para el control de la práctica totalidad de cómo sucede comunicación de red con su programa. Sin embargo, será necesario que para hacer algunos cambios de código en su programa. Además, puede que no sea tan eficiente como acaba de hacer su programa ejecutado como un demonio, para empezar.

EDIT: Yo personalmente nunca uso inetd y siempre optar a escribir los procesos del servidor como demonios independientes

.

Creo que otro factor que vale la pena considerar cuando se decide a utilizar inetd es la cantidad de memoria del manejo de la solicitud de proceso consume en promedio? Si esto es bastante alta, a continuación, con una carga elevada se arriesga quedando sin memoria (ya que las horquillas inetd). El mismo servidor podría ser implementable en un multiproceso o seleccionar-poll manera posiblemente permitiendo una mayor carga / menos memoria por conexión.

¿Qué estrategia alternativa está considerando?

inetd es una buena manera de asegurar su servidor se inicia cuando se inicie el SO en el nivel de ejecución adecuado. Incluso si el diseño de su servidor para tener algún otro mecanismo de gestión, inetd aún podría envolver todos los comandos, sencillamente. Es sólo scripts de shell después de todo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top