到inetd或不给inetd ...当我应该用inetd的适合我的网络服务器程序?

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

  •  23-08-2019
  •  | 
  •  

谁能给一套简明的现实考虑,将驱动器是否不使用inetd的选择来管理作为网络服务器的程序?

(如果使用的inetd,我认为它会改变周围的程序网络代码的要求,所以我认为这是绝对编程有关,而不是一般IT)

的问题是根据各地我看到的实施方式,使用由inetd设法启动网络侦听然后运行永远和需要恒定和重负载的控制程序。它似乎并不像一个不错的选择与教材的inetd使用配置文件(点播,很少使用,轻巧),并让我感兴趣的是更普遍的问题。

有帮助吗?

解决方案

这取决于您的服务使用模式。如果启动时间为您守护低,你希望它不经常使用,那么inted可能是一个不错的选择。它减少或甚至消除了需要写任何其它网络的代码。

如果你的守护进程是更重量级的或更频繁地使用,你可能会更好过写它的独立。你可以很容易地编写一个脚本init.d和一些conf.d配置去用它,它不会更难管理员来管理。大多数编程语言这几天有易于使用套接字库,以便在许多情况下,网络代码甚至可能不是那么困难。

我在我的经验,很少有管理员这几天都熟悉inetd的发现。大多数守护程序只是提供自己的init脚本。事实上,几百系统,而我管理,我想不出一个单一的一个通过inetd启动任何东西的。这是值得考虑的。

其他提示

挂钩到的inetd将使您的服务稍微容易从操作的角度看,以管理为的inetd允许系统管理员对几乎所有的与你的程序的网络通信是如何发生的控制。然而,它会要求你做一些代码更改计划。此外,它可能不会像只是让你的程序作为后台进程运行开始与高效。

编辑:我个人从来没有使用的inetd,总是选择在编写服务器进程作为独立守护进程

我觉得另一个值得考虑的因素决定使用inetd的是过程处理请求多少内存消耗的平均时?如果这是相当高的,那么高负荷下你的风险运行的内存(因为inetd的叉)。在同一台服务器可能在多线程是可执行的或选择轮询方式可能允许更高的负载/每个连接更少的内存。

什么替代策略是你考虑?

inetd的是确保你的服务器的好方法启动OS引导在适当的运行级别时。即使你设计你的服务器有一些其他的管理机制上,inetd仍然可以包装所有的命令很简单。这只是shell脚本毕竟。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top