[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: inetd хочется странного



On Tue, 2010-10-19 at 17:56 +0400, Dmitry E. Oboukhov wrote:
> тут получается некоторый оверхед.
> 
> то есть
> 1. процесс принимает соединение
> 2. процесс его обрабатывает
> 
> в случае pre-fork/pre-exec 1 исключить нельзя.
[snip]
> Ну и вот отсюда и возникли "странные желания": взять и приделать к
> inetd prefork с pre-exec.

Имхо, просить inetd самостоятельно и по-умолчанию запускать несколько
копий сервера не вполне корректно: так убивается сама идея сервиса по
требованию. Правильнее, когда inetd при приходе соединения запускает
сервер и передает ему master socket (который слушает входящие
соединения), после чего сервер сам зовет accept() и форкается по мере
поступления входящих соединений (форкаться он будет не в пример быстрее
запуска с нуля). При отсутствии активности на слушающем порту сервер
завершает работу по таймауту.

Все это делается со стандартным inetd:

"Stream servers are usually marked as “nowait” but if a single server
process is to handle multiple connections, it may be marked as “wait”.
The master socket will then be passed as fd 0 to the server, which will
then need to accept the incoming connection.  The server should eventu‐
ally time out and exit when no more connections are active.  inetd will
continue to listen on the master socket for connections, so the server
should not close it when it exits."

--
Stanislav

Reply to: