Re: Nginx и потоки
не, не, ну при таком раскладе то конечно всё просто но неужели он никуда в память ничего не пишет в ячейки, которые другие потоки читают? 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 и потоки
Если совсем на пальцах, то работает как-то так: 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 и потоки
прочитал. Воркеры, события... а что конкретно происходит, когда идёт запись в память? У него же есть переменные, которые читаются множеством запросов, и при этом пишутся. Как он тут обходится БЕЗ блокировок? 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 и потоки
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