[sisyphus] Re: Apache policy - предложения (was: : Apache2)

Денис Смирнов =?iso-8859-1?q?mithraen_=CE=C1_freesource=2Einfo?=
Пт Фев 27 13:01:21 MSK 2004


On Fri, Feb 27, 2004 at 11:32:58AM +0300, Anton V. Boyarshinov wrote:

 >> Правда того факта, что fork+exec для
 >> системы как таковой операция дорогостоящая это не отменяет.
 AVB> fork+exec НЯМС как раз очень дешёвая операция. 

Ну _очень_ дешёвой я бы её всё-таки не называл. Не зря же на слабых
машинах (вроде моего домашнего целерона 300A разогнаного до 450) самый
лучший способ убийства машины это связка fork+exit. То есть материнский
процесс форкает несколько десятков дочек, каждая из которых постоянно
форкается и при этом дитё немедленно завершается после форка. Так вот на
моей слабенькой машине этого счастья достаточно, чтобы проще было
перезагрузиться, чем остановить это безобразие (при реакции на нажатие
клавиш далеко не мгновенной).

С новыми ядрами (где latency поменьше) и новыми компьютерами это
становится уже неопасным (хотя испортить настроение админу с помощью
такого типа программульки можно запросто, а это уже опасно :)

Сами по себе операции fork и exec очень дорогостоящие. И fork тем более
дорогостоящ, чем больше блоков памяти у процесса (списки владельцев
каждого блока памяти + сменить права доступа на каждый блок конечно
быстрее чем скопировать память, но всё равно долго).

Логику работы exec я себе не очень хорошо представляю (например каким
образом обеспечивается совместное использование бинарника, если на диске
под этим именем может при каждом вызове exec быть разный бинарник) но не
думаю что она совсем проста.

Хотя на _средних_ нагрузках сами fork/exec большой роли не играют, а
играет только то, о чём ты пишешь ниже.

 AVB> Другое дело, если
 AVB> мы делаем exec чему-нибудь, что сначала долго выполняет разного
 AVB> рода  инициализацию и только потом крохотную полезную работу --
 AVB> тогда получается дорого.

...как например интерпретатор Perl. Да, в этом случае стновится особенно
тяжко. Признаюсь честно -- php я на эту тему не тестировал.

А вот на больших нагрузках время от связки fork/exec начинает играть роль
тоже. Собственно именно поэтому Apache предпочитает держать пул дочек,
которые обрабатывают запросы. И именно этим FastCGI лучше чем CGI.

-- 
С уважением, Денис

http://freesource.info




Подробная информация о списке рассылки Sisyphus