netwind

Рейтинг
419
Регистрация
06.05.2007
babnicks:
и много чаго еще делает... Делать эти задачи в отдельных нитях весьма логично.

вот возьмем это утверждение

логично где? в десктопных приложениях с интерфейсной и рабочей частью ?

ничего логичного. это у вас типичный шаблон десктопного разработчика сработал.

netwind добавил 29.10.2011 в 19:55

babnicks:
Синхронизация конечно нужна, как и в любой паралелльной системе, но имхо такая синхронизация требует минимальных накладных расходов ввиду разной функциональности нитей...

а в nginx не нужна. фокус !

iHead:
там намного сложнее все. в моем понимании основная работа перекладывается на ОС, например для отдачи файлов используется sendfile, остается только следить за событиями.

но ведь nginx работает достаточно эффективно и с отключенным sendfile и отключенным aio.

netwind добавил 29.10.2011 в 19:46

babnicks:
Я думаю что эффект от создания такого функционального распараллеливания скорее всего был бы, но это усложнило бы и код и процесс отладки, а выйгрышь возможно был не более 5%

да не в отладке дело

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

зачем ? в nginx каждый процесс полностью независим и на всех остальных плевал.

babnicks, даже если и так. краткий ответ - "это неэффективно по сравнению с используемой сейчас моделью".

ps: и все-таки я в тупняке, почему он (Сысоев) не сделал параллельные нити исходя из их независимой функциональности.

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

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

хотя, на самом деле, nginx тоже использует шаблон. просто менее известный. Можете, например, книжечку полистать Unix : разработка сетевых приложений. У.Р. Стивенс. - девять(!) разных моделей работы сервера.

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

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

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

Dimoks, пусть статистику по емейл читают.

ClockWorkOrange, ну очевидно, Химик или какойто другой автор howto, УЖЕ провел исследовательскую работу по этой теме на старых RHEL. Это не значит, что он с первого раза поставил все. кто-то за это тоже платил. деньгами или своим временем.

Чтобы удешевить работу, можешь сам найти howto для RHEL6 и снова попросить madoff.

Идея-то, в принципе, хорошая.

ClockWorkOrange, по-моему недостаточно еще. сколько раз потребовалась переинсталляция ?

ClockWorkOrange, а что опасного-то? ты платишь - админы эксперимертируют по очереди . идиллия :)

и что, много вы сайтов на erlang написали?

Всего: 6293