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

2014-03-03 Пенетрантность Anatoly Mikhailov

On 01 Mar 2014, at 17:46, Михаил Монашёв postmas...@softsearch.ru wrote:

 Здравствуйте, Igor.
 
 Ввиду  отсутствия  fork()а на Windows, nginx/Windows запускает новые
 процессы. Вот там проблемы, так проблемы. Сигналы - это семечки.
 
 А  есть  желание эти проблемы преодолевать? Т.е. есть желание покорять
 венду с её вендо-админами?

мне кажется, ROI достаточно низкий, да и ребята из Nginx не будут распыляться 
на все подряд

 
 -- 
 С уважением,
 Михаил  mailto:postmas...@softsearch.ru
 
 ___
 nginx-ru mailing list
 nginx-ru@nginx.org
 http://mailman.nginx.org/mailman/listinfo/nginx-ru

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

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

2014-03-01 Пенетрантность Igor Sysoev
On Feb 27, 2014, at 22:22 , AlexyFrost wrote:

 Anton Yuzhaninov Wrote:
 ---
 On 02/26/14 03:17, AlexyFrost wrote:
 Мусора в том, что наследуется нет.
 
 listen socket нужен.
 других сокетов, открытых в мастере не должно быть.
 
 Обработчики сигналов AFAIK переопределяются, если нужно.
 
 Вот об этом я и говорил: с использованием fork() воркер попадает в сильную
 зависимость от того, что должно и не должно быть инициализировано в мастере,
 т.е., какие контр-действия придётся ему делать (закрытие чего то, отключение
 сигналов etc). Понятное дело, что для компилируемой программы этот аргумент
 не столь важен, но, тем не менее, для большого и сложного проекта, который
 пишет не один человек, такие сайд-эффекты вполне существенны, мне кажется. 
 
 К тому же, если форки используются для разных типов воркеров (обработка
 соединений, какой то кеш, какие то сервисные штуки), то у них могут быть
 разные реакции на унаследованные от мастера данные - кому то надо сделать
 то, кому то это, и в случае внесения изменений в мастер (добавили новый
 сигнал?) придётся править код всех воркеров.
 
 То что worker-ы используют память мастера (через COW) очень даже
 полезно - 
 большая геобаза загруженная мастером будет использоваться всеми
 процессами и не 
 надо будет загружать её N раз в каждый worker отдельно.
 
 Для подобных данных можно использовать shared memory, что так же выглядит
 логичнее, чем копия данных мастера, да и в случе потребностей горячей
 замены таких данных сделать это будет проще в одном месте.

Shared memory в неродственных процессах сочетании с ASRL превращается в ад.

 В адресное пространство воркеров попадает часть кода и данных, не
 нужных 
 worker-ом, но ничего плохого в этом нет.
 
 Меня, в целом, не столько беспокоят левые данные мастера в воркере,
 сколько потенциальные проблемы, которые они могут привнести (выше
 перечислял).

Ввиду отсутствия fork()а на Windows, nginx/Windows запускает новые процессы.
Вот там проблемы, так проблемы. Сигналы - это семечки.


-- 
Igor Sysoev
http://nginx.com
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

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

2014-02-27 Пенетрантность Anton Yuzhaninov

On 02/26/14 03:17, AlexyFrost wrote:

Как известно, форк наследует кучу мусора из родительского процесса:
обработчики сигналов, дескрипторы файлов\сокетов, переменные и т.п., словом,
память стека и кучи.


Мусора в том, что наследуется нет.

listen socket нужен.
других сокетов, открытых в мастере не должно быть.

Обработчики сигналов AFAIK переопределяются, если нужно.

То что worker-ы используют память мастера (через COW) очень даже полезно - 
большая геобаза загруженная мастером будет использоваться всеми процессами и не 
надо будет загружать её N раз в каждый worker отдельно.


В адресное пространство воркеров попадает часть кода и данных, не нужных 
worker-ом, но ничего плохого в этом нет.


___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

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

2014-02-27 Пенетрантность AlexyFrost
Anton Yuzhaninov Wrote:
---
 On 02/26/14 03:17, AlexyFrost wrote:
 Мусора в том, что наследуется нет.
 
 listen socket нужен.
 других сокетов, открытых в мастере не должно быть.
 
 Обработчики сигналов AFAIK переопределяются, если нужно.

Вот об этом я и говорил: с использованием fork() воркер попадает в сильную
зависимость от того, что должно и не должно быть инициализировано в мастере,
т.е., какие контр-действия придётся ему делать (закрытие чего то, отключение
сигналов etc). Понятное дело, что для компилируемой программы этот аргумент
не столь важен, но, тем не менее, для большого и сложного проекта, который
пишет не один человек, такие сайд-эффекты вполне существенны, мне кажется. 

К тому же, если форки используются для разных типов воркеров (обработка
соединений, какой то кеш, какие то сервисные штуки), то у них могут быть
разные реакции на унаследованные от мастера данные - кому то надо сделать
то, кому то это, и в случае внесения изменений в мастер (добавили новый
сигнал?) придётся править код всех воркеров.
 
 То что worker-ы используют память мастера (через COW) очень даже
 полезно - 
 большая геобаза загруженная мастером будет использоваться всеми
 процессами и не 
 надо будет загружать её N раз в каждый worker отдельно.

Для подобных данных можно использовать shared memory, что так же выглядит
логичнее, чем копия данных мастера, да и в случе потребностей горячей
замены таких данных сделать это будет проще в одном месте.
 
 В адресное пространство воркеров попадает часть кода и данных, не
 нужных 
 worker-ом, но ничего плохого в этом нет.

Меня, в целом, не столько беспокоят левые данные мастера в воркере,
сколько потенциальные проблемы, которые они могут привнести (выше
перечислял).

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,247942,247994#msg-247994

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

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

2014-02-27 Пенетрантность Валентин Бартенев
On Thursday 27 February 2014 13:22:39 AlexyFrost wrote:
[..]
 Меня, в целом, не столько беспокоят левые данные мастера в воркере,
 сколько потенциальные проблемы, которые они могут привнести (выше
 перечислял).
 

ИМХО все перечисленные проблемы надуманны.

--
Валентин Бартенев
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru