Отслеживая разработку поддержки анонимных сессий в 7й ветке, наткнулся на интересный проект, тут как-то обсуждалось создание оптимизированной сборки - а она оказывается уже есть PressFlow
- Поддержка репликации базы данных. Для этого используется специальный уровень абстракции БД. Который, кстати говоря, обещают внедрить в D7
- Поддержка реверс-прокси кеширования Squid и Varnish. Обслуживаются скрипты и картинки для всех, и страницы полностью для анонимов.
- Заточка под MySQL. Они отказались от других типов баз данных и заточили все под MySQL.
- Заточка под PHP5. Заявляется, что в Друпале используются некоторые функции написанные под PHP4, аналоги которых есть в PHP5, которые работают быстрее. В пример приводится функция drupal_to_js() в Друпале и json_encode() в PHP5
Спасибо seaji за перевод особенностей, ссылки на дистрибутив опубликованы в коментах ниже, ибо выдача по запросу - публиковать не стал, да и выход в инет сейчас не постоянный...
Комментарии
Интересно.
Спасибо!
Весьма и весьма занятно, а то у меня постоянные проблемы с хостингом почему-то. Все какие-то ослы попадаются.
А нам покажете?
Как получить Pressflow
Пока Pressflow бесплатен и опенсорсен. Сейчас Four Kitchens раздает релизы только по запросу. Свяжитесь с нами для получения бесплатного релиза Pressflow и узнайте больше о том, как Four Kitchens и Pressflow могут помочь вашим проектам стать более производительными.
http://fourkitchens.com/contact
Автору топика: Вы хоть бы немножко раскрыли тему. В результате чего достигается оптимизация?
Вот о чем написано здесь: http://fourkitchens.com/pressflow-makes-drupal-scale
1. Поддержка репликации базы данных. Для этого используется специальный уровень абстракции БД. Который, кстати говоря, обещают внедрить в D7
2. Поддержка реверс-прокси кеширования Squid и Varnish. Обслуживаются скрипты и картинки для всех, и страницы полностью для анонимов.
3. Заточка под MySQL. Они отказались от других типов баз данных и заточили все под MySQL.
4. Заточка под PHP5. Заявляется, что в Друпале используются некоторые функции написанные под PHP4, аналоги которых есть в PHP5, которые работают быстрее. В пример приводится функция drupal_to_js() в Друпале и json_encode() в PHP5
Примерно так.
Идея интересная.
Я некоторое время разбирался с производительностью. И вы знаете что?
Я понял, что в ядре D6 практически нет того, что можно оптимизировать. В D5 еще что то можно было поковырять, а вот в D6 нечего.
Запросы к базе просто летают, код модулей подключается не весь, а только необходимыми частями.
Единственно, меня расстраивает, что запросы к базе выполняются на порядок быстрей чем выполнение PHP. В D6 узкое место это PHP. Может быть с отказом от поддержки PHP4 скорость действительно возрастет.
В 7-ке появилась ф-ия
<?phpnode_load_multiple()?>
, теперь несколько нод могут загружаться одним запросом к БД.Также в issues велись разговоры по поводу внедрения кэширования нод (на уровне подгрузки данных в
<?phpnode_load_multiple()?>
), но они сейчас как-то заглохли, как я понял, из-за переделки Field API. У меня лично есть задумки по поводу поддержки кэширования нод полностью (т.е. готовой разметки, чтобы темизацию каждой ноды не запускать), и такого же кэширования блоков (сейчас кэширование блоков есть, но только на уровне данных).Кроме того, насколько я знаю, не решена проблема с
<?phpdrupal_lookup_path()?>
, которая есть и в шестерке.Так что есть еще что оптимизировать
плохо что только под мускул, у 5 мускула неисправлена как я помню бага с большими размерами баз данных, база просто обнуляется.
у постгри такого нет, а отказ от базы на файлах вообще бред. гугля вон плагин распространяет к бродилкам на sqlite для кэширования, распределения нагрузки и синхронизации контента- а друпа отказывается. причем плагин очень перспективный.
бага с большими размерами баз данных
можно уточнить, насколько большая база обнуляется?
очень интересно отправил им письмо... ждем ответа
На заметку. Спасибо
Я тоже им послал запрос, прислали ссылки для скачивания:
Here are the links to pressflow:
http://straussd.fourkitchens.com/pressflow-5-current.tar.gz
http://straussd.fourkitchens.com/pressflow-6-current.tar.gz
скачал, спасибо - поковыряю.
Спасибо, seaji за локализацию Не было возможности оформить пост, сейчас немного причесал...
Лично меня больше всего радует, что выкинута поддержка php4 и замена некоторых функций библиотечными. К сожалению особенностью разработки drupal является заморозка кода, многие изменения, которые входят в 7ку игнорируются в 6ке (например) - ибо можно многое сломать в contrib
Проект заитересовал именно тем, что кто-то взялся поддерживать форк, причем достаточно сложный!
блин. больше трех лет прошло. сколько можно 4ку за собой тянуть.
сам писал для 4ког пыха до последнего но как только 5х стал тянуть работу полностью перешел на него.
более того - завязал с поддержкой клиентов с кривыми скриптами на пхп4. пусть платят за портирование или выживают сами.
а друпа и в 6ой версии тянет за собой этот хвост блин.
Ну дык она релизилась, когда 4ка еще поддерживалась, нельзя было так просто скинуть всех пользователей "задвинутых хостингов"
А конкретно какие части библиотеки в 5-й версии улучшены, есть какие то флаги deprecated? Просто чтобы знать на будущее. Неужели нельзя было переписать оптимальнее стандартную библиотеку, для того чтобы не дублировать?
Пришло письмо:
Pressflow has been updated to releases 6.12.38 and 5.18.39. These
releases include the latest round of Drupal security updates, and we recommend you *test* them immediately.
Download Pressflow 5:
http://cts.vresp.com/c/?FourKitchens/5154b3103f/361e2a706c/7da3095409
Download Pressflow 6:
http://cts.vresp.com/c/?FourKitchens/5154b3103f/361e2a706c/74d2b03c0f
Интересно, а реальные тесты кто нибудь видел?
Маленький пост, как превратить ваш drupal в pressflow.
Для продвинутых пользователей, которые умеют использовать ssh.
Качаем патч http://devstaff.ru/pressflow.patch
И накладываем.
cd YOUR_DRUPAL_SITE_ROOT
cat ../PATH_TO_PATCH |patch -p1
Патч супер! Сделал такой же:)
gor отлично, теперь осталось доделать окружение для этого
Установил на сайт.
Обнаружил ошибку:(
При просмотре содержимого в админ-меню, отбираю по типу материала. Потом пытаюсь скинуть отбор и получаю - Illegal offset type in session.inc on line 147
в session строки
146: drupal_session_start();
147: $_SESSION[$name] = $value;
148: }
Меня попросили сайт за пиво на хостинге с ПХП 4.
Сначала он пожил на е-107, теперь перевёл его на Друпал 6.
Но возможности воздействовать на переход на ПХП 5 сейчас у меня нет.
Так что я, на сегодняшний день, наоборот, радуюсь что поддержка ПХП 4 есть.
И более того, если не удастся перейти на ПХП 5, буду трепетно надеяться, что и 7 версия друпала будет поддерживать php 4 :).
мда, что с людьми пиво делает
Снес в сад
Ку! Плохо что Postgres убрали/позабыли:) Точнее, судя по коду, оставили без изменений. Там есть что оптимизировать. Особенно транзакции (транзакции и особенно их инфраструктура: снапшоты и реверты — в мускле смешны до ужаса/слёз/поноса...) и триггеры, триггеры СУДБ это вообще не раскрытая тема для современных CMS и не будет раскрыта пока мускл шагает по планете, а ребята из постгреса не сделаю нормальный инсталлятор (...да-да под ВИНДУ!!! Пробовать, учиться, тестировать, а там и до *nix не далеко, как это сделал Сысоев с nginx...), более простую систему прав/ролей/разрешений. Надеюсь Oracle позаботится о том, чтобы Sun позаботился о MySQL. Мля:) Пока в печь — а так ооооочень интересно:) Обязательно пощупаю Varnish...
Никто его не убирал, нашлось всего несколько энтузиастов из сообщества, силами которых postgresql сохранился в 7ке. А по оптимизации - все предложения приветствуются, и многопатчей в очереди ожидают что их кто-нить да проверит. Лучше сделать патч, чем пенять на нерадивых разработчиков/самих себя.
Интересный проект. Кто-нибудь тестировал производительность?
UPDATE:
Значит сделал клон тяжелого сайта на этом Pressflow (оригинал: d6.13).
Модулей: ~80-90, часть из них не настроена, так что примерно на 10-20 запросов к базе меньше на Pressflow нежели чем на D6.
Кэш + кэш блоков.
В общем и целом производительность ненамного лучше.
Имхо, я бы на "рабочий" сайт не стал ставить.
У pressflow есть ряд особенностей, используя которые можно хорошо масштабировать drupal. Естественно, что простая установка ничего примечательного не даст.
А вот наприемер если использовать возможность отключения анонимных сессий - то прирост уже становится заметен.
Поддержка реверсивных прокси - весьма полезная вещь для тех, кто озадачен масштабируемостью... да и еще несколько подобных фишечек, которые требуют "вдумчивого" использования
Пробую PressFlow на своём вечно перегруженном проекте, пока вроде всё ок, на вид сайт работает быстрей, но уже заметил один косяк:
Сейчас на сайте пользователей - 87 и гостей - 2
хотя гостей меньше 200 в такое время не бывает.. это и есть последствие отключения анонимных сессий?
все именно так! анонимные сесси - можно забыть. точнее считать их другим способом
а они могут пригодиться в случае, если гости нигде ничего не пишут?
заметил, что переводы здесь кешируются, даже под первым юзером ,чтобы увидеть изменения перевода, нужно очистить кэш
сайт летает, особенно под гостём, хотя в это время обычно лежит
насчёт летает погорячился.. в данный момент подвисон
last pid: 42465; load averages: 14.65, 8.39, 7.22 up 2+12:36:11 21:11:48
468 processes: 2 running, 465 sleeping, 1 zombie
CPU states: 24.3% user, 0.0% nice, 8.0% system, 0.6% interrupt, 67.1% idle
Mem: 5401M Active, 1595M Inact, 566M Wired, 172M Cache, 214M Buf, 134M Free
Swap: 8192M Total, 24K Used, 8192M Free
PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND
54066 mysql 110 44 0 1289M 856M ucond 3 275:11 116.16% mysqld
повисело повисело и снова бегает))
clubwave.ru а как перевели с обычного на оптимизированный?
конечно, сессии я могу отключить модулем
кстати, отключение сессий анонимов будет вроде как в ядре 7-ки
просто залил поверх и всё
ясно
отключил анонимов, вроде стало поживей
форк ставить не рискую
да попробуй.. в бд изменений нет, ничего вроде не произошло за день и сайт шевелиться начал.. ща думаю мемкеш ещё подключать и может чё-то будет путнее, но одно то, что транслеты там кешируются для всех уже должно уйму ресурсов освободить
транслеты это что за звери?
Отключить сессии можно No Anonymous Sessions
Ну да, я отключил
транслеты это переводы ))
опытным путём удалось установить, что кэш на базе работает быстрей кэша файлового через модуль cacherouter
Valeratal, 3-й день идёт, косяков вроде нет.. попробуй тоже поставить
Новая презентация http://www.slideshare.net/alexander_meindl/performance-strategies
Очень похоже, что кастомные сборки будут выкладываться вместе с инсталяционными профилями, http://drupal.org/node/647374
спасибо, интересная инфа
с этим PressFlow странная штука произошла.. Google Analytics, подключённый через одноимённый модуль, показывал нормально посещаемость через раз, я уж думал сервер падает, но по лайвинтернету всё стабильно.. решил залить обратно друпал и вот моё удивление ,на друпале сейчас 110 зарегенных онлайн, тогда как на PressFlow максимум 90 видел..
хм, интересно
еще более интересно насколько в действительности повышается производительность от PressFlow
p.s. у меня например, узкое место сейчас проц (я даже не знаю сколько у меня реально МГЦ)
Возможно кому то будет интересно, исследования в области Java based PHP JIT. Речь идет о перформенс импрувмент до 49%, я правда не понял это с АРС или без, потому что этот JIT сам по себе надстройка над АРС.
http://www.trl.ibm.com/people/mich/pub/201002_vee2010p9-cr.pdf
Я и сам задумывался попробовать сочинить нечто подобное, правда идея была генерить в нейтив и аггрегировать нейтив модуль как икстеншн, но идея споткнулась об eval, в таком случае явно не обойтись без таблицы глобальных и локальных символов для того чтобы динамически ризолвить ивал выражения...
Вот еще проект от фейсбук, недавно выпущенный в опенсорс Hip hop for PHP. Суть проекта заключается в том, что машинно код, написанный на PHP, переписывается на C. Пишут, что более 90% кода на PHP, используемого в facebook сейчас обработано таким образом, что дало примерно 50% производительности. Проекту всего около года, продолжает развиваться.
Да, читал, только это не переписывается а перегенерируется, а затем все это скармливается с компилятору. Для таких проектов как фейсбук это приемлимо, но для хостеров это мне кажется бесперспективно
у кого есть опыт на рабочих проектах?
Опыт есть, всё чотко.
Спасибо
Актуальна ли сборка после выхода Друпал 7?
для 7-ки тоже есть прессфлоу. Я писал
Об эффективности судить не могу