- RU.LINUX (2:5077/15.22) __________________________________________ RU.LINUX _
From : Vladimir Vul 2:5020/400 23 Mar 00 10:43:16
Subj : идея - как улучшить inetd
-------------------------------------------------------------------------------
From: "Vladimir Vul" <vul@bds.ru>
Привет!
Как работает inetd - он вешается на порт, по приходе запроса запускает
назначенный сервер,
тот выполняет запрос, и завершается. Это очень дорого по ресурсам.
Поэтому тяжело работающие сервера работают по другому.
Hапример сквид или апач. Сервер запускается при старте и висит демоном.
Он также запускает несколько потомков - пул.
При поступлении запроса главный сервер (диспетчер) выбирает из пула
незанятого
в данный момент потомка и передает ему запрос с помощью хитрых приемов.
Тот выполняет запрос, и докладывает диспетчеру что он освободился.
Такой способ очень эффективен и концептуален, в отличие от запуска пряди
(трэда)
на каждый новый запрос (ересь виндовая).
Поэтому он применяется в сквиде, апаче и других серверных программах.
За диспетчеризацию запроса отвечает код, практически одинаковый во всех этих
программах.
Поэтому, есть прямая выгода вынести этот код в inetd.
Пусть он для каждого порта запускает пул серверов. Если запросов нет то ни
один сервер не запускается. Если запрос появился, запускается один сервер ,
отрабатывает и завершается.
Если запросы идут непрерывным потоком, то запускается достаточное количество
серверов, чтобы их постоянно выполнять, и пока в очереди стоят запросы, ни
один серверный процесс не завершается, а переходит к выполнению новых.
Также под эту революцию следует изменить конфиг inetd c /etc/inetd.conf на
/etc/inetd.d/
чтобы каждый пакадж имел свой конфигурационный файл.
Вот. С нетерпением жду пинков гур.
--- ifmail v.2.15dev4 * Origin: Golden Telecom (2:5020/400)