Немного про nginx

N
На сайте с 06.05.2007
Offline
419
#11
babnicks:
Писать веб-сервер в ОДИН поток это очень не эффективно, так как одновременно разные коннекты находятся на разной стадии выполнения и эти стадии зачастую полностью параллельны друг-другу.

Понимаю, что после 21 года программирования это сложно восприять, но nginx действительно может эффективно работать именно в ОДИН поток.

Строго говоря, потоков там 1 + N, где N = worker_processes в конфиге,а один поток просто контролирует остальные и ничего не делает. Проверить очень просто - pgrep nginx | wc -l

Кнопка вызова админа ()
I
На сайте с 23.12.2010
Offline
25
#12

соглашусь пока что с netwind , вот некоторое подтвердение http://forum.nginx.org/read.php?2,194884,194938

iHead
На сайте с 25.04.2008
Offline
137
#13
babnicks:
Про прирост чего Вы говорите? 1.6 раза от чего? Вы это где и когда видели УДВОЕНИЕ 😮 хоть чего-либо от использования гиппер-трейдинга? 😂

1.6 от ситуации без Hyper-threading.

"удвоение" видят все владельцы современных процессоров с поддержкой Hyper-threading: в ОС каждое ядро с гипертредингом определяется как 2 ядра, но в реале коэффециент 2 трудно достижим из-за того, что гипертрединг не удваивает реальные ядра, а позволяет более эффективно их использовать.

по остальному вам коллеги ответили.

Рекомендуемый хостинг партнер 1С-Битрикс (https://www.ihead.ru/bitrix/), PHP-хостинг (https://www.ihead.ru/php/), доверенный партнер RU-CENTER (https://www.ihead.ru/news/573.html), официальный представитель REG.RU в Кирове (https://www.ihead.ru/news/851.html)
I
На сайте с 23.12.2010
Offline
25
#14
netwind:
Строго говоря, потоков там 1 + N, где N = worker_processes в конфиге,а один поток просто контролирует остальные и ничего не делает.

да? не знал, обычно +1 принимает соединения и передает дальше, это его стандартная функция. Собственно, непонятно как могут принимать соединение сразу несколько ниток на одном сокете. Не складывается.

zexis
На сайте с 09.08.2005
Offline
388
#15
babnicks:

PS: мельком сейчас посмотрел исходники nginx, на первый взгляд все именно так, как я написал :)

Да, вы просто гигант программирования, что бы мельком посмотрев на исходники, понять как они работают.

:)

Сейчас пишу демона, который будет работать в качестве серверной части онлайн игры.

Написание сетевых приложений - задача довольно сложная.

babnicks
На сайте с 23.10.2009
Offline
47
#16
netwind:
Проверить очень просто - pgrep nginx | wc -l

Вы ошибаетесь, этим Вы никак не проверите наличие нитей в рамках одного процесса, а я говорил именно про это.

Пруфом является не это, а поиск по исходникам по строке "ngx_create_thread" только в этой процедуре идет создание нити с помощтю pthread_create.

И действительно, похоже я был не прав :( nginx похоже действительно управляется со всем основным циклом работы при помощи одной нити.

babnicks добавил 29.10.2011 в 14:10

zexis:
Да, вы просто гигант программирования, что бы мельком посмотрев на исходники, понять как они работают.

Для того, чтобы понять как создаются нити достаточно поискать вызовы системных функций за это отвечающих, а после поглядеть вызовы тех функций, которые вызывают они.

babnicks добавил 29.10.2011 в 14:12

iopiop:
да? не знал, обычно +1 принимает соединения и передает дальше, это его стандартная функция. Собственно, непонятно как могут принимать соединение сразу несколько ниток на одном сокете. Не складывается.

😂 ну собственно говоря да, слушать как минимум должен кто-то один. (имеется ввиду что ДА только один может слушать)

100% защита от спам-ботов (https://www.keycaptcha.com)
I
На сайте с 23.12.2010
Offline
25
#17
zexis:
Да, вы просто гигант программирования, что бы мельком посмотрев на исходники, понять как они работают.

на самом деле в коде действительно можно увидеть поддержку multi-threads, но она сейчас не работает правильно, сысоев обещает ко второй версии исправить. Как я понимаю, апач имеет 1:1 модель, nginx 1:N, хотят сделать M:N, наверное как раз для тех случаев когда диски очень медленные по сравнению с поступающими запросами, т.е ввести некоторую интерактивность, чтобы все запросы хоть чуть-чуть, но обрабатывались, независимо от глубины очереди.

Забавно что Sun (и не только он, бо очень непросто) отказался от такой модели лет 10 назад в яве, посмотрим что получится у сысоева.

Lord Maverik
На сайте с 15.04.2003
Offline
471
#18
babnicks:
TC, по сабжу имхо надо понять какая доля нагрузки лежит именно на nginx, возможно как раз nginx стоит вообще загнать на 1-2 процесса (у меня лично nginx вообще в один процесс работает, так как его роль 1% от общей вычислительной нагрузки), а остальное пускай кушает mysql, php и прочие ресурсоемкие процессы.

Вобщем зависит все от того, какой у Вас сайт, какие ресурсы он потребляет больше всего.

Дело в том что nginx, сам по себе, не много ресурсов потреблеят, и возможно нет никакого смысла, а то и вообще вред (в виде лишней скушанной памяти) в увеличении кол-ва его процессов.

На серваке ~150 сайтов различных. Есть с сапой с множеством страниц.

Не хотелось бы, чтобы при набегах ботов яндекса или сапы на несколько сайтов сразу nginx отсылал их куда подальше.

RedMall.Ru (https://redmall.ru) - Товары из Китая (Таобао, Tmall) с проверкой качества, скидка для форумчан 7% Партнерская программа 2 уровня: 5% + 5%. Подробнее. (https://redmall.ru/about/partner/)
I
На сайте с 23.12.2010
Offline
25
#19
babnicks:
😂 ну собственно говоря да, слушать как минимум должен кто-то один.

таки как максимум

babnicks
На сайте с 23.10.2009
Offline
47
#20
Lord Maverik:
На серваке ~150 сайтов различных. Есть с сапой с множеством страниц.

Вопрос еще в памяти, если по памяти не критично, то можно с легкостью ставить по кол-ву логических ядер. Если с памятью напряг, то лучше сделать по кол-ву физических процессоров :)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий