Welcome! Log In Create A New Profile

Advanced

Процессная модель

February 25, 2014 06:17PM
Привет.

Предлагаю подискутировать о процессной модели nginx. Раскуривал недавно исходники, хотелось прояснить пару философских моментов, которые мучают меня уже не первый год, и вот натолкнулся на эти моменты со spawn`ом воркеров.

Как известно, форк "наследует" кучу "мусора" из родительского процесса: обработчики сигналов, дескрипторы файлов\сокетов, переменные и т.п., словом, память стека и кучи. Так вот, как же избежать этого: "почистить" от родительской памяти форкнутый процесс нельзя, а юзать exec*() для запуска стороннего бинарника-воркера, который бы полностью заместил собой память форка - это значит делать второй, отдельный бинарник, что не так элегантно, как решение с одним исполняемым файлом nginx`а + fork().

Основной вопрос в том, что метод с fork() имеет сильную зависимость от родительского процесса. Например, если сначала добавить какие-нибудь обработчики сигналов в родителе, а потом форкнуть, nо дочерний процесс их унаследует, следовательно, форк подвержен значительным сайд-эффектам, и зависим даже от порядка кода в родительского процесса. Можно, конечно, условиться о порядке запуска, и о том, что делать "ататат" с копией чужой памяти нельзя, но это всё как то грустно выглядит, и вообще, нарушает принцип инкапсуляции.

Короче, хотелось бы услышать мнения о том, как же правильно организовывать многопроцессное приложение: fork() или fork() + exec() (ну или system()), преимущества и недостатки тех или иных подходов, и почему в nginx используется именно fork(), а не что то другое из вышеописанного.

Спасибо.
Subject Author Posted

Процессная модель

AlexyFrost February 25, 2014 06:17PM

Re: Процессная модель

Gena Makhomed February 26, 2014 04:38AM

Re: Процессная модель

Anton Yuzhaninov February 27, 2014 04:36AM

Re: Процессная модель

AlexyFrost February 27, 2014 01:22PM

Re: Процессная модель

Валентин Бартенев February 27, 2014 02:44PM

Re: Процессная модель

Igor Sysoev March 01, 2014 10:42AM

Re[2]: Процессная модель

Михаил Монашёв March 01, 2014 12:48PM

Re: Процессная модель

Anatoly Mikhailov March 03, 2014 04:50AM

Re: Re[2]: Процессная модель

Igor Sysoev March 03, 2014 07:22AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 177
Record Number of Users: 6 on February 13, 2018
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready