Если совсем на пальцах, то работает как-то так:
1. главный процесс создает слушающий сокет
2. главный процесс спавнит столько дочерних процессов, сколько указано в
конфиге
3. каждый дочерний процесс путем опроса слушающего сокета через
select\poll\epoll\kqueue получает соединение с клиентом(эта операция
безопасна для доступа из нескольких процессов) и дальше с этим соединением
работает исключительно этот процесс(в один тред) через те же
select\epoll\kqueue

Ведь если убрать всю сложную логику обработки запроса, то все, что делает
nginx - это пересылает байтики из одного сокета в другой. Тут
многотредовость не нужна - более чем достаточно вот такого разбиения на
несколько воркеров.

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,292726,293815#msg-293815

_______________________________________________
nginx-ru mailing list -- nginx-ru@nginx.org
To unsubscribe send an email to nginx-ru-le...@nginx.org

Ответить