Re: Nginx и потоки

2022-03-09 Пенетрантность greenwar
не, не, ну при таком раскладе то конечно всё просто
но неужели он никуда в память ничего не пишет в ячейки, которые другие
потоки читают?

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

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


Re: Nginx и потоки

2022-03-09 Пенетрантность neon
Если совсем на пальцах, то работает как-то так:
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


Re: Nginx и потоки

2022-03-09 Пенетрантность greenwar
прочитал. Воркеры, события... а что конкретно происходит, когда идёт запись
в память?
У него же есть переменные, которые читаются множеством запросов, и при этом
пишутся.
Как он тут обходится БЕЗ блокировок?

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

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


Re: Nginx и потоки

2021-11-01 Пенетрантность Maxim Dounin
Hello!

On Sun, Oct 31, 2021 at 11:11:25AM -0400, greenwar wrote:

> как именно Nginx оперирует потоками?
> пришёл запрос, его Nginx принял в поток, передал в FastCGI, а что дальше?
> он будет держать поток, пока FastCGI не вернёт ответ, а Nginx его передаст
> источнику
> или сам FastCGI передаст ответ источнику?
> сам FastCGI тоже на каждый запрос выделяет поток...
> короче, потоки для FastCGI надо урезать в половину или как это работает?

Если под словом "поток" вы имеете в виду треды, они же потоки 
выполнения, то в наиболее простом виде ответ будет "никак".

Для обработки соединений nginx использует события, обрабатывая 
множество клиентских соединений в рамках основного потока 
выполнения каждого рабочего процесса, без использования 
дополнительных тредов.  Подробнее почитать об этом можно где-то 
тут:

http://www.aosabook.org/en/nginx.html

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