有没有人能给出一组简明的现实考虑因素,来决定是否使用inetd来管理充当网络服务器的程序?
(如果使用inetd,我认为它改变了程序中网络代码的要求,所以我认为它肯定是与编程相关的,而不是一般的IT)
这个问题是基于我所见过的一个实现,该实现使用由inetd管理的控制程序来启动一个网络侦听器,然后该侦听器将永远运行,并承担持续而沉重的负载。它似乎不太适合教科书中的inetd用法(按需、不常使用、轻量级),这让我对更一般的问题产生了兴趣。
发布于 2008-12-24 06:38:40
这取决于您的服务的使用模式。如果您的守护进程的启动时间很短,并且您希望它不经常使用,那么inted可能是一个很好的选择。它减少甚至消除了编写任何额外的网络代码的需要。
如果您的守护进程更重量级或更频繁使用,您可能更好地独立编写它。您可以很容易地编写一个init.d脚本和一些conf.d配置,这样管理员就不会更难管理它了。如今,大多数编程语言都有易于使用的套接字库,因此在许多情况下,网络代码甚至可能并不那么困难。
在我的经验中,我发现现在很少有管理员熟悉inetd。大多数守护进程只提供自己的init脚本。事实上,在我管理的几百个系统中,我根本想不出有哪一个系统能通过inetd启动任何东西。这是值得考虑的事情。
发布于 2008-12-24 05:58:09
连接到inetd将使您的服务从操作的角度更容易管理,因为inetd允许sysadmin几乎控制与您的程序的所有网络通信发生的方式。但是,它需要您对您的程序进行一些代码更改。而且,它可能没有让你的程序一开始就像一个守护进程那样高效。
编辑:我个人从不使用inetd,总是选择将服务器进程编写为独立的守护进程。
发布于 2008-12-24 06:40:07
我认为在决定使用inetd时,另一个值得考虑的因素是处理请求的进程平均消耗多少内存?如果这是相当高的,那么在高负载下,您可能会耗尽内存(因为inetd forks)。同样的服务器可以以多线程或选择轮询的方式实现,可能允许每个连接有更高的负载/更少的内存。
https://stackoverflow.com/questions/390847
复制相似问题