оффтоп из «php программист»

флоппик

promotor fidei
Команда форума
Партнер клуба
Но он, в случае с задачей вроде "баннерной системы", будет работать в разы быстрее, имхо. И уж если упрётся в процессор, ни кто не мешает запустить в несколько процессов, например, так: http://docs.python.org/library/multiprocessing.html
1. Аргументируй такие громкие утверждения
2. А это уже не «горожение огородов»?
 

cDLEON

Онанист РНРСlub
Аргументируй такие громкие утверждения
1) Отсутствие оверхеада на форки
2) Отсутствие оверхеада на "реинициализацию" приложения на каждый реквест (пусть даже частично это решается за счёт eaccelerator'a)
3) Отсутствие постоянно висящих форков, ожидающих ИО
4) Ну и остальные плюсы асинхронки...
А это уже не «горожение огородов»?
А разве горожение?
 

fixxxer

К.О.
Партнер клуба
То есть, ты утверждаешь, что треды с GIL работают эффективнее префорк-модели. Записал :D
 

Breeze

goshogun
Команда форума
Партнер клуба
1) Отсутствие оверхеада на форки
2) Отсутствие оверхеада на "реинициализацию" приложения на каждый реквест (пусть даже частично это решается за счёт eaccelerator'a)
3) Отсутствие постоянно висящих форков, ожидающих ИО
4) Ну и остальные плюсы асинхронки...

А разве горожение?
1) с каких пор префорк-модель с "асинхронными" воркерами имеет дикий оверхед?
2) когда демон запущен, откуда реинициазизация?
3) они просят есть, занимают тыщи памяти, требуют денег до зарплаты?
4) плюсы да, есть. даже от простого select

Оверхед тут если и есть, то он точно не в форках и реинициазизациях
 

cDLEON

Онанист РНРСlub
То есть, ты утверждаешь, что треды с GIL работают эффективнее префорк-модели. Записал :D
Чукча, по всей видимости, не читатель. Там нет GIL и нет тредов. Там используются процессы в роли worker'ов и шаред мемори. А от префорка толку ноль при заявленных нагрузках.
 

fixxxer

К.О.
Партнер клуба
А, не, не утверждаешь, ты просто вообще уже сам не понимаешь, что говоришь. Сам приводишь в пример префоркалку и потом рассказываешь об "отсутствии оверхеда на форки" (который, вообще-то, настолько минимален, что говорить вообще не о чем - вообще-то форк уже 20 лет как везде copy-on-write).
 

fixxxer

К.О.
Партнер клуба
Чукча, по всей видимости, не читатель. Там нет GIL и нет тредов. Там используются процессы в роли worker'ов и шаред мемори. А от префорка толку ноль при заявленных нагрузках.
Слушай, перестань позориться. Тем более в разделе "работа". Лучше пойди изучи хоть что-нибудь. Вникая в суть, а не хватая слова не понимая их смысла. Ты вообще не понимаешь о чем говоришь, то что ты привел в пример это и есть префорк. Апач (mpm_prefork) и fpm работают ТОЧНО ТАК ЖЕ. И акселераторы ТОЧНО ТАК ЖЕ используют shared memory.
 

cDLEON

Онанист РНРСlub
fixxxer
При всём к вам моём уважении, не поленитесь перечитать то, что я предлагаю ? Там процессы используются аналогично директиве nginx worker_processes, а уже в них работает однопоточное приложение на базе ioloop
о пхпшном, который делает то, о чем попросят: хошь генератор пакетов, хошь агрегатор. не принципиально
а каким вообще макаром вы сюда пхп-демона приплели?
 

fixxxer

К.О.
Партнер клуба
nginx сюда не приплетай. Че в питоне все библиотеки ВНЕЗАПНО стали неблокирующими?

слушай, прекращай это, споря с неучем опускаешься до его уровня, я удаляюсь. иди матчасть учи
 

cDLEON

Онанист РНРСlub
nginx сюда не приплетай. Че в питоне все библиотеки ВНЕЗАПНО стали неблокирующими?

слушай, прекращай это, споря с неучем опускаешься до его уровня, я удаляюсь. иди матчасть учи
Я, если честно, о тебе более лучшего мнения был. Ты прав. Спорить с неучем не вижу ни какого смысла :))) Тем более, что этот самый неуч делает выводы опираясь на собственную ограниченность.
пошли по кругу уже, fixxxer уже писал
И я тоже писал о PHPDaemon. если что. Но на данный момент мы рассматриваем "классическую" схему. И вопросы я задавал применительно к ней.. Т.к. было очень интересно ПОЧЕМУ выбор пал именно на ПХП. Не более. Но как обычно набежали форумные тролли и начали мерятся знанием английских аббревиатур и "авторитетом".
 

флоппик

promotor fidei
Команда форума
Партнер клуба
cDLEON, я с удовольствием выслушаю твой опыт использования питона в подобном высоконагруженном окружении, я в отличие от fixxxer-а всегда открыт к получению новых знаний.
 

cDLEON

Онанист РНРСlub
cDLEON, я с удовольствием выслушаю твой опыт использования питона в подобном высоконагруженном окружении, я в отличие от fixxxer-а всегда открыт к получению новых знаний.
Что-нибудь о Twisted, Tornado etc. Слышали?
В каждом из них своя реализация ioloop, есть поддержка epool,kqueue, для обоих написаны разнообразные асинхронные библиотеки.
На данный момент я использую asyncmongo+tornado. Получаю огромные преимущества от реалтаймовой обработки запросов. Синтаксический сахар вроде питоновых генераторов (http://www.tornadoweb.org/documentation/_modules/tornado/gen.html) увеличивает читабельность и скорость разработки кода. Кроме того, сейчас вот прикрутил ко всему этому самописный монго-слейв. Который синхронизирует простейшие изменения в базе данных для каждого процесса.
Да, кстати. По поводу мультипроцессорности: http://www.tornadoweb.org/documentation/_modules/tornado/process.html вот реализация из коробки в этом самом tornado.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Мне кажется, то, о чем говорил фиксер в "ограничен одним сервером" - это проблемы локов и race condition.
Добраться до них трудно, но последствия от них будут фатальными.

Модель: на фронте 2 сервера, на них работает стая однопоточных демонов, которые собирают в своей памяти данные перед запросами в базу.
Самая вероятная проблема: база начинает упираться в i/o и лочиться на коммитах.
Получается, что пока процесс копит в памяти - все хорошо, но когда он ждет записи в базу - он залочен.
Можно сделать асинхронные запросы и получить шанс на пике положить базу насмерть, когда все процессы сделают по несколько асинхронных коммитов одновременно.
Выход - писать в nosql, разгребать отдельным процессом и в базу писать однопоточно.

Если у нас 2 сервера и 100 процессов php, которые пишут в memcached, нам нужен фоновый скрипт, который работает непрерывно, выбирает данные из memcached, обрабатывает и пишет в базу однопоточно.

Что именно нам пытаются доказать? На средних нагрузках модель связки однопоточных демонов эффективнее, чем модель связки однопоточных демонов и позволяет использовать два сервера вместо двух? Объясните, я не понимаю!
 

cDLEON

Онанист РНРСlub
мы же рассматриваем классическую схему, не? т.е. какой-нибудь mod_wsgi или mod_python, не к ночи будет упомянут.
Мы рассматриваем классическую схему vs асинхронную. Я ни чего не имею против того же PHPDaemon. И его тоже можно рассматривать. Но вы влезли в разговор с аргументами, которые привожу я, в защиту фиксера.
Модель: на фронте 2 сервера, на них работает стая однопоточных демонов, которые собирают в своей памяти данные перед запросами в базу.
Самая вероятная проблема: база начинает упираться в i/o и на коммитах лочатся таблицы.
Да. Есть такая проблема. Вообще, конечно, отталкиваться нужно от задачи. Конкретно моё предложение звучало как раз о том, что бы:
Если взять модель "баннерной системы", то как раз упереться в дисковый ИО можно только при огромном количестве инсертов. Я бы в таком случае попробовал бы минимизировать их количество ценой денормализации данных. Т.е. ввёл бы понятие "сессия", которая флашилась бы с уже подсчитанными показами за данный промежуток времени. Теперь смотрите. 50М хитов ~= 1к инсертов\сек(примерно) не денормализированных данных в пике. Пусть каждый клиент - уникальный,а время на флаш сессии 10 сек. Тогда раз в 10 секунд мы имеем всё те же 1к инсертов. За те 10 секунд "таймаута", я думаю, любая БД с любой конфигурацией хардов, разрулит эту нагрузку. К тому же тот же tornado будет держать с лёгкостью этот 1к коннектов даже на 1 одном ядре (если, например, сами баннеры отдавать через редирект на nginx.) Т.е. по-сути и масштабировать то, оказывается, не чего!!!
Естественно цифры взяты из головы и ни на какую точность не претендуют. Как и я, собственно, не претендую на гениальность. Прошу прощения если получается через-чур сумбурно, бессонная ночь... :)
 

флоппик

promotor fidei
Команда форума
Партнер клуба
cDLEON, возможно, тебе стоит определится, о чем именно ты говоришь. А то ты убеждал на прошлой странице, что все надо делать на «скриптах-однопоточниках» а потом приводишь ссылки, что в Twisted есть многопоточность. Как говорится, ты или крестик сними, или...
 
Сверху