Приветствую всех друпаловодов. Господа я в шоке. Либо я туплю конкретно, либо что-то тут нетак. Ситуация следующего плана:
Разработкой на друпал занимался раньше, но оф. проектов небыло, только изучал. Сейчас возникла проблема, написать коммерческий сайт - интернет магазин. Решил строить на друпале, так как в свое время он довольно хорошо запал мне в душу в отличии от остальных мегамонстров навроде wordpress и joomla. Сам по профессии и натуре программист, поэтому мой выбор друпал. НО! Есть ноут на котором разрабатываю софт. Проц - AMD 2-х ядерный. Частоту не помню. Памяти 4GB. Стоят Apache 2.2+MySQL+ngnix. Есть сайт. С лок. 1 пользователь - он-же зарегистрированный. Скорость открытия главной страницы 1-2 секунды. Первый байт отдается системой только после того как страница сделана. Вчера-сегодня рыл интернет. Нашел много сайтов, с огромной загрузкой на которых стоит друпал. Блин. Нажал ссылку, подождал 1-х секунд, страница открылась...
Сижу и чешу репу. Если на 1 пользователе такая задержка. Что будет если сайт будут смотреть 100 зарегистрированных пользователей? Это-же абзац будет. Подскажите если не жалко:
1). Если у Вас есть высокопосещаемый сайт, где много зарегистрированных пользователей - требования к серверу, например - сервер с проц XXX памяти YYY тянет одновременно ZZZ пользователей. Время формирования страниц не более KKK сек.
2). Вообще. Реально сделать на друпале сайт на котором очень много (1000) будет ЗАРЕГИСТРИРОВАННЫХ пользователей. Надеюсь это не потребует всего оборудования vkontakte.ru или facebook.ru?
Подведя итоги. Друпал это вещь. Написано под него очень много всего. НО! Либо я дурак который незнает как заставить егло работать быстро, либо я ничего не понимаю...
Комментарии
Последняя строчка. Заметьте, вы сами это сказали!
Угу. Вчера просматривал сайты пользователей этого сайта - hr-portal.ru и 1nsk.ru. Посещаемость у сайтов дикая. Зарегился на них. В онлайне не более 10-20 пользователей. Мне страницы отдаются с задержкой от 2-х секунд. Что будет если на них в онлайне будет 100 пользователей сидеть? Причем как я понял, читая топики владельца hr-portal, сайт крутится на довольно неслабом оборудовании.
Вопросы я задаю эти из-за того, что начинаю сомневаться, а вытянет ли дрюп мой проект. Сейчас есть VPS 600мегагерц проц, 512 оперативки. Совсем уныл когда увидел скорость на своем ноуте...
И вообще. Например. Делаем на друпале форум. Если сравнить PHPbb или FluxBB и друпал форум. Какие требования, и что надо сделать чтобу друп. форум работал так-же быстро как PHPbb или FluxBB?
Не боись, всё нормуль. У меня на локалхосте друпал тоже виснет, а на хостинге - нормально. Залей сайт на хостинг и посмотри как он там будет работать.
По форуму вы ничего не сделаете, вы сможете только приблизится по скорости и может быть по внешнему виду.
PHPbb или FluxBB это узкозаточенные движки, если претесь от них, то сделайте на базе PHPbb или FluxBB интернет магазин ;).
Аналогично и плакаться насчет скорости в друпале, скорость друпала это плата за его универсальность, его можно и нужно ускорять и оптимизировать, но обогнать в скорости узкозаточенную платформу для интернет магазина или чего-то другого друпал не сможет. Это пусть горькая, но правда.
По вашему посту п.1 - погуглите и посмотрите
п.2 - Реально.
Я уже неоднократно говорил и буду говорить не юзайте связку друпал + уберкарт если вам нужен только магазин с очень большим количеством товаров и посещаемостью, достаточно классного свободного двигла для этих целей, ну или платного ;).
Какая ОСь?
Linux ubuntu 10-я. Параметры кеширования запросов MySQL установлены. Запросы кеширует. nginx отдает статику. Тоже проверил. PHP работает как модуль apache. Пробовал FastCGI, без изменения. База данных в InnoDB. Стоит eaccelerator. Просто незнаю что делать. С одной стороны "top" во время формирования страницы выдает загруженность не более 2-х %, с другой стороны долго. Тестил сайт онлайновыми сервисами, которые выдают время в зависимости от нагрузки. На 25 пользователях время равнялось 8! секундам.
это не друпал
Вроде как дрюп. И автор периодически здесь пишет...
ссылочкой не поделитесь?
Сумосбродная конечно идея. Просто глядя на такую картину подумалось. Дрюп-у нужно 0,6 секунд на формирование страницы. Как бы сделать так, чтобы это время пользователи качали картинки/скрипты текущей страницы. А то время отдачи первого байта практически совпадает со временем когда друпал сделает страницу. Это во первых. Во вторых. Возможно конечно я чего-то незнаю. Но например, есть на сайте блок "последние комментарии на форуме". Как сделать его КЭШ вечным, и удалять только когда будет введено новое сообщение?
Синдром Синкоры детектед.
What is it?
Экономия на спичках в надежде на 10^500 онлайн
Планируется использование модуля аналогичного ubercart-marketplace. Выходить на покупку дорогого хостинга/своего сервера при 50-ти посетителях смысла не вижу. Но и эти 50 VPS невытягивает, что обидно. Думаю все согласятся, что пользователям некомфортно будет ждать 10 секунд загрузки страницы.
P.S. Просто на своем персональном сайте сейчас использую ngcms. 12 запросов к БД и генерится любая страница. Ссылку нажал, тут-же получил страницу. В друпале этого нет. Приходится ждать 1-2 секунда если я один на сайте.
Смотрите модули а-ля cdn. Тем более что вы видимо, программист, и сможете там все настроить (я не могу, к примеру)
Ставьте вьювс, и если он уже стоит, смотрите настройки кэша. Как минимум ставьте встроенный кэш вьювса + есть модуль контент_кэш, только он у меня так и не заработал как нужно было.
Откуда у вас 100 зарегистрированных в интернет-магазине ? Если вы перед покупкой собираетесь принуждать к регистрации - так это значит вы сами себе злобный буратино
При регистрации флаг - "запомнить меня. Через куки сайт будет узнавать что это зарегенный пользователь и давать ему возможность комментировать/писать в форуме. Кто знает когда они будут на сайте?
Вам обидно, а хостеру профит, VPS это грандиозный маркетинг-развод, не более того.
Полсекунды на генерацию это нормально. А сейчас вы не разобравшись в ситуации начинаете типичную premature optimization. Если на одного посетителя страница грузится 1 секунду, то это совсем не говорит о том, что при двух посетителях эта же страница будет грузится 2 секунды, а при трёх - 6 секунд. Я, наверно, вас удивлю, но при маленькой посещаемости вообще толку от ваших отптимизай типа nGinx да акселлератора нету.
Я тестил через онлайн тестеры. На 25 онлайн пользователях активно пользующихся сайтом время отдачи страницы они показали 8 секунд
Уберите всю эту херню и смотрите узкое место в чистой системе. Апач, мускул и php. Всё! Остальное прикручивается только после диагноза.
Вообще ваши метания похожи на аналогию:
"Добираюсь с работы до дома очень долго - целый час, вот думаю, как бы это дело ускорить? В кроссовки вложил новые стельки, чтобы быстрее ходить, купил более аэродинамичную кепку, дабы не тормозила во время ходьбы, но НЕ ПОМОГАЕТ!"
А может надо учесть, что из этого часа 50 минут тратиться на стояние в метро и стельки и кепка не помогут?
Нет. Вы неправы. Мои метания это только попытка понять, какую нагрузку выдержит мой сайт при отключенном boost и при зарегистрированных пользователях. Сейчас просто определяюсь, либо почти все писать с нуля на ngcms, либо строить на друпал. В планах форум+marketplace будут drupal-овскими. Активное пользования сайтом на уровне 2000 в начале. Потом больше, но и монетиация потом попрет. Есть хостинг. Как я уже писал ngnix+mysql+_apache 2.2+512 оперативки + канал 10Мб. Немогу понять. Сколько дрюп нормально будет держать пользователей на этом железе?
Стельки, кепка... А что тогда тормозит? PHP проц грузит на 2 процента вроде как по "top". ФС летает. От канала отклик отличный. Что тормозит тогда???
Что можно сделать кроме сделанного для ускорения CMS? Если не жалко, владельцы больших проектов на друпал, поделитесь своими настройками/конфигами
Блин. Наприемр сайт моей семьи. Написан на NG. zavaliy.ru. Летает. Правда тормозить в последнее время начал, когда фотки на GOOGLE CDN перевел. Скоро верну обратно. Сейчас перевел его на дрюп. Сравните скорость... Из модулей подключены стандартные - color и FiveStar.... На локалхосте с NG сайт открывается мгновенно, на drupal 1 сек...
P.S. Перевел на drupal на локлхосте. В сеть загружу в течении недели... Sorry...
установите модуль devel и посмотрите что тормозит
а вообще, по моему странные оба вопроса
не видя сайта как можно оценить его?)
Девел стоит напостоянку. Я не ламер если что... Время запросов около 500-600 мс. Но страница отдается 1-2 с Я так понимаю. При поступлении запроса. Вначале дрюп делает страницу. Потом начинает ее отдавать. Потом браузер видит какие картинки можно параллельно гразить и грузит их... НО! Дрюп делает не более 90 запросов к БД. Смотрел. Некоторые лишние. Но я немогу указать на какой странице каким модулям грузиться. Или могу?!? Убрал Locale. Весь перевод пересадил в settings.php. Толку почти ноль.
И тем не сенее на 1-м пользователе имеем 2 сек на страницу...
И опаять же... SQL+время генерации страницы у меня - X+Y=1100мс. А страница пиходит за 2!
Опять же! Может я что то непонимаю. Но у hr-portal некоторые страницы генерятся почти мгновенно, несмотря что я зарегистрированный пользователь. В шапке пишется именно мое имя... Как это сделано?!? явно не статикой...
Залил личный сайт. Без темы. На друпале. Пока просадок нет... Посмотрим... Это проект с посещаемостьб 1-2 пользователя в неделю... Друп круто!!!
Блин... На хостинге сайт летает... Остается одно - я чего-то незнаю. Чего? Не считая увеличения мощьностей?
Скорее всего ничего, максимум читали мануалы по оптимизации написанные боксёрами по переписке
Так отключите буст и нагрузите проверками с куками!
Я не понимаю зачем оптимизировать всё подряд, не пытаясь разобраться в чём трабл. Зачем вы установили nginx? У вас плохо отдаётся статика? Зачем нужен eaccelerator? Большая потеря на рендере? Я совсем не против nginx, eaccelerator, sphinx и пр. и пр., но не вижу смысла в установке всего это добра вслепую.
Eaccelerator потому что надо для быстрого рендеренга PHP. nginx чтобы разгрузить apache лишними запросами. Sphinx не ставил, но в планах есть. Еще раз пишу. Я пытаюсь понять, сколько онлайн пользователей одновременно пользующихся сайтом вытянет тот хостинг что есть у меня. Я не понимаю, или незнаю, зачем в друпале есть модули Соц. сетей, если он максимум 20 онлайн пользователей неможет вытянуть?!?
Я для оценки проводил такой тест:
сначала написал html "Hello world"
потом php print "Hello world"
тормоза появляются уже на этом этапе
потом сравнил производительность nginx + php-fpm и apache + mod_php
а также сервер http, написанный на C epoll
разницы между программой на C и nginx нет, а индеец давал уже на этом этапе задержку.
Если Вас интересует именно 1к пользователей онлайн, то Вам готовое решение на друпал вряд ли подойдет.
С этой проблемой я столкнулся пару лет назад, когда искал движок под популярные тогда скандинавские аукционы. Писали их всякие индусы и продавали за 100$, но архитектура была такова, что такой скрипт - движок выдерживал нагрузку максимум 100 пользователей, дальше были тормоза.
Чтобы реализовать проект сравнимый с соц. сетями, на которые Вы замахиваетесь, без увеличения аппаратной базы - мне самому не нравится идея, если апач тормозит - ставь второй сервер, то возможно, Вам стоит погуглить на предмет C10k kegel - там еще в начале века описывают эту проблему.
Пример такой проблемы - подсказка строки поиска на гугле (яндексе) - если Вам действительно это надо, сначала посчитайте, сколько это будет стоить.
И то, что Вы сначала оцениваете производительность, а потом думаете, реализовывать или нет, я считаю правильным подходом.
Возможно, в Вашем случае, все же можно оптимизировать / кешировать запрос к странице, и оптимизацию надо начать с помещения кода php в память, потом mysql настроить как надо, возможно подкрутить sysctl, и посмотреть, что наиболее затратно.
Может быть, что-то после этого можно будет закешировать.
Идеальным вариантом, конечно, была бы сборка наподобие SSI на стороне сервера именно тех блоков, которые не изменились, но такие решения, как я читал, есть на mail.ru и т.д., но не в открытом доступе.
В общем, идея такова, что если определиться с политикой кеширования, пожертвовав несколькими минутами оперативности, то скорее всего проект потянет - так по-моему и на этом сайте сделано, т.к. некоторые блоки для зарегистрированных пользователей не обновляются пару минут (может дольше).
Почитал. Интересно. Кстати, из этой же проблемы почитал про работу nginx. Был приятно удивлен, что это разработка сотрудника rambler-a. Сегодня буду тюнить сервер. Как минимум попробую весь php код в память забросить. Посмотрю что это даст. Думаю насчет ssi. Но пока не придумал как его нормально прикручивать.
Очевидно, что тормозит:
1) Мускуль. Поставьте девел и посмотрите кол-во запросов
2) Сам PHP. В Друпале система хуков, значит многочисленные перехваты. Посмотрите сколько весит дистро приличного по функционалу сайта. То же можно сделать с количеством кода в несколько раз меньшим. НО. Малейшее изменение - лезем править врукопашную
Дык на серверном железе+главное, на голой оси, без плюшек вроде графики
Вы не пытаетесь понять, вы пытаетесь оптимизировать не поняв. Разложите по полочкам: сколько занимают запросы, сколько рендер скрипта, сколько загрузка страницы со всеми потрохами, сколько рендер страницы в браузере. Вот тогда и разговор по существу будет а не крики: "не выдержит 20 пользователей онлайн"
Я знаю для чего используют Eaccelerator, я спрашивал про другое.
Я знаю для чего используют nginx, я спрашивал про другое.
Ещё раз (такое впечатление, что вы меня совсем не понимаете): разберитесь, что у вас тормозит! Не надо ставить кучу софта и оптимизировать всё подряд!
То есть мы пришли к тому, что дело не в друпале и не в железе. Ну хоть что-то...
Еще Дональд Кнут говорил, что преждевременная оптимизация — залог провала проекта.
Угу. Напишите на стандартных модулях друпа vkontakte.ru. И запустите проект. А потом по ходу пьесы, когда у пользователей страница по минуте будет грузиться беритесь за оптимизацию.
Писать можно на многом и по разному. Можно на друпе (многое уже написано), можно с нуля на php или еще лучше на C (максимум оптимизации под конкретный ресурс). Сложно рабочую лошадку менять если проект уже работает...
Не передергивайте. Архитектура Друпала для вконтакта не подходит.
И да будет вам известно, что движки социальных сервисов, таких, как твиттер, фейсбук, вконтакте, находятся в постоянном допиливании, о чем сообщают сами разработчики.
Так что не надейтесь, что поставил и забыл.
Я привожу в примеры соц. сети исключительно из-за того, что под друпал есть модули, которые позволяют это реализовать. Раз написали эти модули, наверное не просто так и наверное не из-за того, что друпал сильно грузит сервера...
Фейсбук начинал с голого пыхыпе, теперь его архитектура частично работает на Питоне и Эрланге.
И ничего, живут еще.
Начинали с голого PHP написанного специализированно для facebook. Вроде с эрлпнгом у них все заглохло. Сейчас вроде используют HIPHOP-PHP. Трансляция PHP->C. Эрлангом в свое время интересовался. Интересный язык, но мне показался слишком навернутым и несильно гибким.
Вы не видите общей картины. Если есть модуль для дружбы, это не значит, что можно сделать вконтакте. Целое больще суммы частей. Набор всех модулей не даст вам вконтакте. Странно, почему вам это сразу не понятно.
Мне это понятно. Мне пока непонятно то, какую нагрузку выдержит сайт сделанный мной на друпале, если в основном пользователи будут не анонимы. Либо как оптимизировать все, чтобы для незарегистрированных пользователей так-же быстро формировались страницы как для анонимов. Authcache особого прироста не дал. Например. Есть на сайте блок погоды. Обновляется 4 раза в день. Как сделать так, чтобы для всех (анонимов и зарегенных) пользователей он брался из кеша, а кеш перестраивался ТОЛЬКО моим модулем? Друп всегда как я заметил вызывает хуки модуля, которые его повторно переформируют.
На самом деле, можно Вконтакте на Друпале сделать.
Нужно дождаться квантовых компьютеров, и тогда весь вконтакте сможет работать на основе Друпала на шаред хостинге.
Блин. Такое впечатление что Drupal идет по дорожке Microsoft и 1С. Та-же функциональность но на более мощьных компах. Оптимизации вообще ноль. У меня главная страница сайта делает 250 запросов. То-же на своем коде - 9!
Понимаете, это настолько зависит от параметров хостинга, что и говорить нечего.
Вы просто делайте, и всё. Был бы сайт — а хостинг найдется.
Наконец, еще одна ошибка — полагать, что пользователи уйдут с сайта при первом же падении. Если сервис нужный, пользователи никуда не денутся. Сколько раз хабр падал? Сколько раз твиттер уходил в даун? И что, все от них ушли?
С mysql у друпала есть проблемы, но не те, которые Вы описываете. Много запросов еще не означает, что будут тормоза, т.к. они почти все идут из кеша. Чтобы более точно оценить нагрузку, приведите хоть один пример загрузки страницы - какой запрос самый дорогой к mysql, сколько генерируется страница. На локалхост можно поставить xdebug, если проблема в коде.
После этого можно определять "узкие" места. А так разговор получается беспредметный.
а если эти много запросов умножить на много пользователей? скажем 200 запросов для одного посетителя страничка генерируется за 0.2с, для 100 посетителей будет уже 20с
речь как бе о пустом тестовом сайте на друпале с нагенерированым контентом, никаких модулей кроме стандартных да и тех немного
у вас наверное и 9 женщин ребенка за 1 месяц родить могут
Уж сколько раз поднималась тема производительности, вы прежде чем писать о 20 юзерах почитали бы тут на форуме про это.
Пример:
1. Есть электромясорубка.
2. Есть кухонный комбайн с функцией электромясорубки.
Ну неужели не понятно, что у кухонного комбайна меньше производительность в рубке мяса, чем у штатной мясорубки за те-же деньги. Зато в плане универсальности комбайн впереди и сок выжать и пюрешку сделать и колбасу порезать :).
А все почему-то хотят комбайн, но чтоб с производительностью как узкозаточенный девайс.
Не бывает такого, а если придумать то стоить такой универсал будет ровно столько, сколько стоят в сумме все узкие решения, неужели это не достаточно просто понять, жаждите скорости пишите свое узкоточеное творение, не хотите много думать и писать смиритесь с тем что есть сделайте на друпале и по мере наращивания количества юзеров оптимизируйте совершенствуйте своей проект, какие проблемы?
О, очередной пациент. Вам в палату к Синкоре.
PS вы буйный или нет ?
Когда вы уже все успокоитесь?:)
Так все уже успокоились еще 3 месяца назад с возвращением и пробуждением. Ты наверное как медведь в зимнюю спячку впадал ;).
Блудный сын вернулся?
это вы где такой математике научились?
какие у вас расчеты? или хотя бы практика. у меня выделенный сервер с 4гб памяти и кореквадом падает от 200 залогиненных пользователей, профайлер друпала показывает что главная страница для юзера генерируется за 0.3с делая при этом 300 запросов к бд и потребляя 40мб памяти
улыбнуло)))
опять улыбнуло)
200 в сутки или в секунду?
за 10 минут. мускул выжирает всю память и тонет в свопе.
По крайней мере Вы локализовали проблему. скорее всего у Вас запросы где-то кривые, без индексов, или мускул неправильно настроен. Здесь где-то есть материал, как выявить проблему и решить.
У меня главная страница для залогиненного юзера генерится за 200 мс (это 0.2с, или 0.02с?), делая при этом 28 запросов и съедая 16 мегабайт. Возможно у вас на главной списки материалов, где для каждого материала вызывается node_load()? Покажите сайт. Есть несколько приемов, позволяющих
в разысущественно уменьшить количество запросов к БД и уменьшить количество съедаемой памяти.Кроме того, на моем хостинге идеально настроен мускул, наверное это тоже нельзя списывать со счетов, и еще у меня отключен русский интерфейс (locale), но даже с включенным локалем, строки для перевода можно выносить в settings.php, ведь каждая строка для перевода - запрос к базе.
По моим ощущениям лучших результатов вам поможет добиться именно настройка мускула, но если закрыть на эту настройку глаза, то способы оптимизации все равно есть.
<!-- Generated in: 107.13; Memory used: 4718592; (5 Mb) -->
с локалью, анонимус Patrol;
<!-- Generated in: 455; Memory used: 4980736; (5 Mb) -->
Админ;
-----