1.5М зарег. юзеров - справится ли друпал?

Главные вкладки

Аватар пользователя crigor crigor 27 мая 2011 в 22:05

Здравствуйте,
Я учавствую в разработке одного проекта, в котором заказчик хочет добавить 1.5М юзеров в базу и хотел бы с вами посоветоваться: стоит ли продолжать разработку на друпале?

Проект сделан на D6, суть его в том, что любой желающий может зарегистрироваться и начать получать ремайндеры - уведомления (по email, SMS) о том, что необходимо в какие-то дни пройти обследование в клинике (юзер в год получит 20-40 уведомлений). На сайте не использовались тяжёлые модули типа CCK, Views, по сути, у нас почти голый друпал с количеством нод менее 100 и без таксономии. Весь функционал сосредоточен в самописных модулях. Эти модули не используют сложных SQL запросов.

После регистрации юзер должен ответить на multistep form на ~100 вопросов (checkboxes), после прохождения опроса кое-где будет меняться содержимое на страницах для конкретного юзера.

На сайте самое главное - это функционал для залогиненных юзеров, анонимам делать там нечего. Но по моим расчётам юзеры наврядли будут проводить более чем 15-30 минут на сайте и просматривать более 100 страниц после регистрации, следующий заход они возможно сделают через 1-3 месяца.

И вот недавно заказчик договорился с одной клиникой, которая обещала предоставить базу на 1.5 миллиона юзеров. Насколько это количество зарегистрированных юзеров критично для друпала? Сколько юзеров может быть онлайн максимум при грамотно настроенном не самом дешёвом сервере? Я не могу сориентироваться и сказать сколько и каких серверов понадобится, скажем, при цифре в 1000 юзеров онлайн. Сильно ли будет отличаться в плане scalability сайт на друпале/Pressflow по сравнению с каким-то другим фреймворком?

Спасибо.

Комментарии

Аватар пользователя xxandeadxx xxandeadxx 27 мая 2011 в 22:17

"crigor" wrote:
На сайте не использовались тяжёлые модули типа CCK, Views, по сути, у нас почти голый друпал

зачем вам вообще друпал тогда? пишите на фрэймворке

Аватар пользователя Виктор Степаньков ака RxB Виктор Степаньк... 27 мая 2011 в 22:20

"crigor" wrote:
И вот недавно заказчик договорился с одной клиникой, которая обещала предоставить базу на 1.5 миллиона юзеров. Насколько это количество зарегистрированных юзеров критично для друпала? Сколько юзеров может быть онлайн максимум при грамотно настроенном не самом дешёвом сервере? Я не могу сориентироваться и сказать сколько и каких серверов понадобится, скажем, при цифре в 1000 юзеров онлайн. Сильно ли будет отличаться в плане scalability сайт на друпале/Pressflow по сравнению с каким-то другим фреймворком?

1. Количество зареганых юзеров - пофиг
2. Что такое дешёвый сервер? Я видел и полторы тысячи авторизованных онлайн.
3. Фреймворк - всё зависит от тебя

Аватар пользователя Ильич Рамирес Санчес Ильич Рамирес Санчес 27 мая 2011 в 23:14

"crigor" wrote:
И вот недавно заказчик договорился с одной клиникой, которая обещала предоставить базу на 1.5 миллиона юзеров. Насколько это количество зарегистрированных юзеров критично для друпала?

то есть вы будете юзерам слать письма без их согласия? Smile

Аватар пользователя crigor crigor 27 мая 2011 в 23:38

Всем спасибо за быстрый отклик!

"xxandeadxx" wrote:
зачем вам вообще друпал тогда? пишите на фрэймворке

Дык друпал и есть фреймворк, который я тщательно выбирал после CodeIgniter. Проект уже сделан на друпале, вот и стоим на распутье: отдать другой компании проект, кто сможет потянуть разработку, или сами сможем.

"RxB" wrote:
2. Что такое дешёвый сервер? Я видел и полторы тысячи авторизованных онлайн.

Например, есть такой сервер (400$/mo):
– Dell PowerEdge 2950 Rack Mount
– 2 X Quad Intel Xeon @ 2.5GHz, 1333MHz FSB
– 8GB FB 800MHz Memory
– PERC Integrated Raid Controller
– 4 X 300GB, SAS, 15K RPM Hard Drive
– RAID 1 Configuration (2 + 2)
Как-то можно вообще рассчитать на сколько юзеров онлайн его хватит? Хотя бы порядок знать. Эту конфигурацию я взял отсюда: Presentation: 3.4 Million page views per day, 92 million per month, one server and Drupal, но там только 5000+ зарегистрированных, онлайн наверное не более пары десятков одновременно.

Кстати, друпал.ру на чём крутится?

Аватар пользователя axel axel 28 мая 2011 в 1:05

crigor wrote:
Например, есть такой сервер (400$/mo):
– Dell PowerEdge 2950 Rack Mount
– 2 X Quad Intel Xeon @ 2.5GHz, 1333MHz FSB
– 8GB FB 800MHz Memory
– PERC Integrated Raid Controller
– 4 X 300GB, SAS, 15K RPM Hard Drive
– RAID 1 Configuration (2 + 2)
Как-то можно вообще рассчитать на сколько юзеров онлайн его хватит? Хотя бы порядок знать. Эту конфигурацию я взял отсюда: Presentation: 3.4 Million page views per day, 92 million per month, one server and Drupal, но там только 5000+ зарегистрированных, онлайн наверное не более пары десятков одновременно.

Кстати, друпал.ру на чём крутится?

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

По собственному опыту закачки в друпал больших объёмов данных, число пользовательских аккаунтов не критично (критично число пользователей в онлайне). Также некритично число нодов и число комментариев. Проблемы помнится были на D5 и D6 при загрузке сотен тысяч терминов таксономии, но с этим тоже есть обходные пути (см. модуль leftandright к примеру).

Аватар пользователя crigor crigor 27 мая 2011 в 23:41

"Ильич Рамирес Санчес" wrote:
то есть вы будете юзерам слать письма без их согласия? :)

Проект абсолютно легальный и очень даже полезный для жителей USA, в америках так просто спам не порассылаешь. Наверняка будут как-то привлекать юзеров, я на то и рссчитывыю, чтобы не все сразу ломанулись и не всем слать ремайндеры, там ещё много чего оптимизировать надо. Могу дать ссылку на проект если не сочтут за рекламу.

Аватар пользователя Ильич Рамирес Санчес Ильич Рамирес Санчес 28 мая 2011 в 0:10

"crigor" wrote:
Проект абсолютно легальный и очень даже полезный для жителей USA, в америках так просто спам не порассылаешь. Наверняка будут как-то привлекать юзеров, я на то и рссчитывыю, чтобы не все сразу ломанулись и не всем слать ремайндеры, там ещё много чего оптимизировать надо. Могу дать ссылку на проект если не сочтут за рекламу.

смотря на какой рост расчитывать. миллион строчек в БД - не так и много. от запросов зависит.
но вебсервер и СУБД я бы разделил. и для СУБД взял бы что помощнее(а именно - памяти побольше надо).

Аватар пользователя xxandeadxx xxandeadxx 28 мая 2011 в 0:15

"crigor" wrote:
Дык друпал и есть фреймворк

я про php фреймворки

"crigor" wrote:
Проект уже сделан на друпале, вот и стоим на распутье

что мешает заполнить таблицу user тестовыми данными в нужном количестве и посмотреть что произойдёт? за вас это делать никто не будет

Аватар пользователя q2_faith q2_faith 28 мая 2011 в 0:23

интересный проект) ссылку дадите?) по предмету обсуждения сказать особо нечего, но не стоит отказываться от друпала) имхо система гибкая, как тут правильно замечают, самый главный модуль "прямые" руки)

Аватар пользователя misterpronin misterpronin 28 мая 2011 в 0:28

А мне вот интересно может ли друпал 2 миллиона онлайн выдержать? Хотя наверное глупый вопрос... Всё упирается в сервер, если по логике... Хотелось бы посмотреть на друпал-сайт с такой посещаемостью...

Аватар пользователя Виктор Степаньков ака RxB Виктор Степаньк... 28 мая 2011 в 0:40

"misterpronin" wrote:
А мне вот интересно может ли друпал 2 миллиона онлайн выдержать? Хотя наверное глупый вопрос... Всё упирается в сервер, если по логике... Хотелось бы посмотреть на друпал-сайт с такой посещаемостью...

я бы просто посмотрел на сайт с такой посещаемостью.
Их врядли десяток даже наберётся

Аватар пользователя q2_faith q2_faith 28 мая 2011 в 0:42

"misterpronin" wrote:
2 миллиона онлайн выдержать

тут как ни странно друпал это средство) сколько вы вложите усилий это ваше право)

Аватар пользователя crigor crigor 28 мая 2011 в 1:02

"q2_faith" wrote:
интересный проект) ссылку дадите?)

http:// health care alert.com
Можете не регистрироваться, вот тестовый аккаунт:
login: test@example.qwe
pass: 123
Он на шареде.

2 all, как думаете, этот проект оставлять на друпале? По сути глобальных улучшений функционала для залогиненных юзеров пока не будет, сейчас займёмся отпимизацией. В будущем заказчик планирует привлечь ещё больше юзеров, поэтому цифра в пару миллионов зарегистрированных юзеров вполне реальная (сколько из них будет онлайн пока сложно сказать).

RxB wrote:
"crigor" wrote:
Например, есть такой сервер (400$/mo):

Эт вы где такое так дорого нашли?

Наверное та презентация устарела, вот и цены такие. Я пока в ценах не ориентрируюсь, но очень скоро придётся.

Аватар пользователя Crea Crea 28 мая 2011 в 1:28

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

Аватар пользователя axel axel 29 мая 2011 в 0:01

Crea wrote:
Число пользователей очень даже влияет, если делаются джойны в таблицу пользователей. Миллионом записей в таблице при особом таланте можно сервер поставить раком. При прямых руках, впрочем, проблем быть не должно.

Ну допустим 1.5млн в таблице users. И что, join с node no uid при выборке десятка нодов так уж напряжёт субд? Очевидно, кривыми запросами можно на любом числе записей тормознуть сервер, но я имел ввиду работу модулей ядра. И там первой на больших объёмах данных начинает тупить таксономия с её рекурсивными выборками.

Аватар пользователя Crea Crea 29 мая 2011 в 3:33

axel wrote:

Ну допустим 1.5млн в таблице users. И что, join с node no uid при выборке десятка нодов так уж напряжёт субд? Очевидно, кривыми запросами можно на любом числе записей тормознуть сервер,

Ну попробуй тормозни при 10 записей - у тебя будут летать что temporary tables, что filesort, любой кривейший запрос без индекса.
Число записей напрямую влияет на кривые запросы, т.к. увеличивается число строк для просмотра движком. На миллионе уже нельзя себе позволить кривые запросы.

axel wrote:

но я имел ввиду работу модулей ядра. И там первой на больших объёмах данных начинает тупить таксономия с её рекурсивными выборками.

На голом ядре никто сайты не делает, а вот CCK + Views творят чудеса. CCK особенно замечателен его многочисленными джойнами

Аватар пользователя axel axel 30 мая 2011 в 20:17

Crea wrote:
Ну попробуй тормозни при 10 записей - у тебя будут летать что temporary tables, что filesort, любой кривейший запрос без индекса.
Число записей напрямую влияет на кривые запросы, т.к. увеличивается число строк для просмотра движком. На миллионе уже нельзя себе позволить кривые запросы.
На голом ядре никто сайты не делает, а вот CCK + Views творят чудеса. CCK особенно замечателен его многочисленными джойнами
Большое спасибо за разъяснения, кэп!

Аватар пользователя Ильич Рамирес Санчес Ильич Рамирес Санчес 28 мая 2011 в 1:32

"Crea" wrote:
Число пользователей очень даже влияет, если делаются джойны в таблицу пользователей. Миллионом записей в таблице при особом таланте можно сервер поставить раком. При прямых руках, впрочем, проблем быть не должно.


потому я и говорю под SQL надо сервак ОТДЕЛЬНО. с большим объемом памяти. Smile

Аватар пользователя crigor crigor 29 мая 2011 в 12:49

Всем спасибо за советы, тут уже холивар видать начался Smile

Проект будем продолжать делать на друпале, надеюсь получится отличный и нужный проект!

Если среди вас есть те, кто сможет помочь настроить сервер(а) и помочь с их выбором, будем рады долгосрочному сотрудничеству, пишите на crazy.developer@gmail.com (по возможности укажите стоимость вашей работы $/hour). Помощь понадобится где-то через месяц, закинем 1000 юзеров и посмотрим что произойдёт.
Спасибо!

Аватар пользователя petrovnn petrovnn 30 мая 2011 в 18:34

я так понимаю что все упирается в память сервера.

Допустим у вас 2 000 000 юзеров. Умножаем их на 30 (уведомлений в год), получается 60 лямов. Это - столько уведомлений будет отослано в год. Уведомления я так понял посылаются только на мобилу? или дублируются еще и на ящик? Это важно т.к. если только на мобилу, то посещалка будет на порядок меньше.

Итак, 60 лямов делим на 365 = ~ 160 000 уведомлений в день. Вопрос остается только в том, сколько из этих 160 тыщ после получения уведомления придут на сайт? Впринципе, в рунете есть несколько сайтов на друпале с сопоставимой и даже большей посещаемостью; другое дело, что сайты эти в основном работают по схеме 90% анонимов 10% (или меньше) залогиненных, поэтому сравнивать вас с этими сайтами будет не до конца верно.

Мне кажется что одним сервером при 160 тыщ залогинненных в день вы не обойдетесь.

Полезным будет ознакомиться с докладом разработчиков forbes.ru
http://romka.eu/blog/doklad-na-drupalconfmoscow-2011

Порассуждаю еще.

При моей посещалке примерно до 2000 человек в день, яндекс-метрика показывает максимальные значения - 3, иногда 4 запроса в секунду при условии 4 просмотра на посетителя. По моим скромным подсчетам при 160 тысячах, и 4-х просмотров страниц (как у меня), у вас уже получится 300 просмотров в секунду , что весьма и весьма нехило, и один сервак как мне кажется с этим не справится. Интуиция мне подсказывает что при 300 запросах в секунду, на сайте онлайн должно быть не меньше 500-800-1000 пользователей.

А теперь давайте сделаем совсем страшную вещь, представим что ваши пользователи делают не 4 просмотра, а 100, как вы написали, тогда будет какая-то нереальная цифра примерно в 6500 просмотров в секунду.

НО

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

Теперь скажите, сколько памяти отжирает друпал для прогруза страницы для залогиненного юзера? Поставьте девел (или может он у вас уже стоит) и включите галку в настройках "показывать сожранную память", и посмотрите сколько мегабайт он потребляет для главной и для типовой внутренней.

если время генерации страницы для залогиненого составляет 250 мс (у меня так), то 6500 запросов в секунду будут съедать ((6500/4)*(кол-во мегабайт для генерации одной страницы))/2

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

Если страница требует 16 мегабайт, и время ее генерации 250 мс (0.25 сек), то для 6500 запросов в секунду понадобится 13 гигабайт оперативки. Поправьте меня если я в чем-то ошибаюсь.

Тут многое зависит от от вермени генерации страницы. Если страницы генерятся очень быстро, то память после их генерации освобождается тоже быстро. Верно?

Фреймворки конечно, жрут существенно меньше памяти, и могут отрабатывать быстрее (если нормально написать) т.к. в них нет универсальности, которая есть в друпале.

Я не-очень опытный разработчик в друпале, (как и вообще в серверном программировании), поэтому не воспринимайте мои слова как истину в последней инстанции - проверяйте и анализируйте эти данные в том числе и сами. А так-же ищите подтверждения (или опровержения) этих мыслей у более опытных друпалургов.

Аватар пользователя Виктор Степаньков ака RxB Виктор Степаньк... 30 мая 2011 в 19:19

"petrovnn" wrote:
При моей посещалке примерно до 2000 человек в день, яндекс-метрика показывает максимальные значения - 3, иногда 4 запроса в секунду при условии 4 просмотра на посетителя. По моим скромным подсчетам при 160 тысячах, и 4-х просмотров страниц (как у меня), у вас уже получится 300 просмотров в секунду , что весьма и весьма нехило, и один сервак как мне кажется с этим не справится. Интуиция мне подсказывает что при 300 запросах в секунду, на сайте онлайн должно быть не меньше 500-800-1000 пользователей.

Математика верная. Но сервера хватит и одного. Доказано fermer.ru
"petrovnn" wrote:
откуда вы взяли эту цифру в 100 просмотров после логина? Даже социальные сети типа контакта и фейсбука едва-ли наберут такое количество просмотров за сессию.

100 просмотров это реально много.

В остальном математика неверная

Аватар пользователя petrovnn petrovnn 30 мая 2011 в 20:45

"RxB" wrote:
Математика верная. Но сервера хватит и одного. Доказано fermer.ru

А сколько на фермере залогиненных тусуется в одно время?

Аватар пользователя crigor crigor 31 мая 2011 в 20:36

"petrovnn" wrote:
откуда вы взяли эту цифру в 100 просмотров после логина?

Просто прикинул сколько юзер просмотрит страниц от начала процесса регистрации до закрытия браузера с сайтом. Регистрация - 4 страницы, потом опросник - ещё страниц 15, затем он пока полазит по сайту - ещё страниц 20. Затем юзер захочет зарегистрировать свою бабушку - ещё +20 страниц. Ну и умножим это на 2-3 и получим в худшем случае 100. Цифра 100 - довольно грубая оценка. Из этих 100 просмотров можно закэшировать (authcache?) почти все страницы, за исключением форм.

Ремайндеры отсылаются на емейл и на телефон в виде СМС, но чтобы отправить СМС - отсылается опять же емейл на SMS Gateway. Для отправки емейлов можно будет вообще отдельный сервант поставить и отсылать по крону через какую-нибудь самописную программу на C++.

Аватар пользователя petrovnn petrovnn 1 июня 2011 в 0:10

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

Вопрос есть по регистрации.
Если вам дадут базу на 1.5 миллиона пользователей, то как будет выглядеть их регистрация?

вариант 1
Рассылается 1.5 миллиона писем, с предложением зарегиться. Юзер заходит на сайт, регится (4 страницы) потом заполняет опросник (15 страниц)

вариант 2
логин создается автоматом и он только проходит опросник в 15 страниц.

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

Аватар пользователя Andruxa Andruxa 1 июня 2011 в 0:22

"crigor" wrote:
опросник - ещё страниц 15

вы когда последний раз в своей жизни заполняли такой опросник?
я - никогда, на второй странице уходил с сайта,

а с учетом того, что

"crigor" wrote:
Ремайндеры отсылаются на емейл
такой емейл автоматом идет в спам-лист, со всеми вытекающими

Аватар пользователя crigor crigor 1 июня 2011 в 2:51

"petrovnn" wrote:
То есть из полутора миллионов реально будут пользоваться сайтом в лучшем случае половина - согласны? И половина это очень оптимистичная оценка, на мой взгляд.

Вот и я так считаю. Но тут дело не в этом. Заказчик очень амбициозный и рано или поздно он найдёт ещё больше юзеров.

Скорее всего юзеров будем регистрировать автоматом, но проходить опросники им придётся самим. Те кто не посещал сайт ниразу или откажется от работы с сайтом - удалим.

Специфика проекта такова, что юзеру по-сути делать нечего на сайте. Он должен один раз пройти опросник и может сделать это в следующий раз только после своего следующего дня рождения.

"petrovnn" wrote:
я конечно не вдавался сильно в детали проекта, но чтобы зарегистрировать бабушку посетить 20 страниц - это многовато как-то. Если вы насчитываете такое количество просмотров - нет-ли проблемы в проектировании

Страниц 20 - это с огромным запасом. Только что проверил - 3-4 страницы на регистрацию + 9-12 на опросник, который в любой момент можно прервать.

Не знаю насколько правильный у нас подход к проектированию, но в данном слечае что хочет заказчик то мы и делаем. Он захотел сделать опросник на 100+ вопросов на 10 страницах - пожалуйста. Думаете я не пытался отговорить от некоторых вещей? Smile Для меня usability превыше всего, именно оно позволит сохранить и приумножить кол-во юзеров.

"Andruxa" wrote:
вы когда последний раз в своей жизни заполняли такой опросник?
я - никогда, на второй странице уходил с сайта,

Ну, опросник опроснику рознь, тут юзеру очень желательно ответить на вопросы, т.к. это его здоровье. Ответил на вопросы - узнаешь например что рак простаты не за горами и лучше идти к врачу Smile

"Andruxa" wrote:
такой емейл автоматом идет в спам-лист, со всеми вытекающими

Это будет уже следующая ветка борьбы.

Глянул в Devel output на PHP 5.3 + APC (Linux), потребление сайтом памяти на старте - 1М, в конце - 8-9М. Странно, под виндой на денвере PHP 5.2 без APC выдаёт devel_init()=2.2 MB, devel_shutdown()=16.6 MB. Кому верить?