серверная архитектура для высоконагруженного проекта

Volodya

Новичок
Нужно составить серверную архитектуру для проекта с 1000 одновременными пользователями и присутствием личного кабинета на сайте. Сайт в основном контентный с использованием фреймворка Symfony.
В сети нагуглил некоторые решения, которые применяются для сверхнагруженных проектов, но интересно почитать как бы Вы предложили делать, или может уже был опыт работы с подобной нагрузкой.
Интересует подробности. Благодарю заранее.
 

MiksIr

miksir@home:~$
Для начала понять, что сайт - не скамейка и не помещение, там не может быть "одновременно пользователи". Могут быть одновременные запросы на сайт, но это совсем не то, что вы подразумеваете говоря "1000 одновременными пользователями".
Если пользователь тыкает на ссылку раз в 20 секунд, то 1000 "одновременных пользователей" - это 50 запросов в секунду (если не считать статики, которой можно пренебречь на данном этапе).
Если запрос отдается за 400 ms, то эти 50 запросов в секунду - 20 одновременных запросов.
Как считаете - это много или мало?
 

Volodya

Новичок
Для начала понять, что сайт - не скамейка и не помещение, там не может быть "одновременно пользователи". Могут быть одновременные запросы на сайт, но это совсем не то, что вы подразумеваете говоря "1000 одновременными пользователями".
Если пользователь тыкает на ссылку раз в 20 секунд, то 1000 "одновременных пользователей" - это 50 запросов в секунду (если не считать статики, которой можно пренебречь на данном этапе).
Если запрос отдается за 400 ms, то эти 50 запросов в секунду - 20 одновременных запросов.
Как считаете - это много или мало?
Кликает пользователь меньше - в среднем 1 раз в минуту на подобных ресурсах. Я не являюсь админом, но помню историю которую наблюдал на одной фирме, как на одном проекте на битриксе, где была посещаемость 180 тыс в месяц после ввода личного кабинета для пользователей - все успешно упало. А работало на одном сервере(nginx) c nginx-кэшированием. Собственно отсюда и вопрос по серверной архитектуре от меня.

Один сервер или несколько нодов нужно, использовать ли varnish (раньше не юзал) и т.д. Как лучше и как правильнее?
 

MiksIr

miksir@home:~$
Если вас интересует эта тема и вы хотите в ней разобраться, первое, что нужно сделать - не использовать предпосылки вида "они сделали личный кабинет и все упало". "Личный кабинет" - это не методика программирования и не база данных. Это программный код. Который может работать хорошо или плохо. Для программиста не может быть причины "выкатили личный кабинет", может быть причина "из-за дополнительно выводимой на сайте информации с каждым запросом время ответа повысилось до 2 секунд, что привело к росту одновременных соединений выше, чем спрогнозированные ресурсы сервера". Отсюда вывод - что-то меняем в личном кабинете или в серверах.

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

Собственно по серверной архитектуре для вас ответ простой - берете VPS с обычным nginx+PHP+db, запускаетесь, по мере роста - изучаете, что вы можете оптимизировать в коде решая вопросы роста нагрузки вертикальным масштабированием (vps круче или переезд на свой физический сервер). В тот момент, когда станет не хватать ресурсов одного сервера, а все реальные оптимизации по коду сделаны - уже должно придти понимание, как двигаться дальше. Если не придет - задавайте вопросы, ищите консультанта и т.п.
 

Hello

Новичок
Нужно составить серверную архитектуру для проекта с 1000 одновременными пользователями и присутствием личного кабинета на сайте. Сайт в основном контентный с использованием фреймворка Symfony.
В сети нагуглил некоторые решения, которые применяются для сверхнагруженных проектов, но интересно почитать как бы Вы предложили делать, или может уже был опыт работы с подобной нагрузкой.
Интересует подробности. Благодарю заранее.
Слишком абстрактный вопрос.
Для новостного сайта, где весь динамический контент это статьи от сотрудников, с 1000 запросов в секунду справится 1 сервер на котором будет php+mysql+nginx
Для социальной сети, где люди постоянно комментируют, ставят лайки и загружают видео может и 10 серверов не хватить, т.к. там будет говнокод на битриксе
 

Volodya

Новичок
Собственно по серверной архитектуре для вас ответ простой - берете VPS с обычным nginx+PHP+db, запускаетесь, по мере роста - изучаете ..
Проект уже нагружен на 60 тыс посетителей в день, но там то ли asp, то ли что-то другое. Нужно вот просчитать ресурсы, с учетом того, что будет перенос на Symfony. Если бы проект был с нуля, то понятное дело @MiksIr, все нужно делать так как Вы говорите.
Вот нашел ссылку с описанием требований к железу http://help.keitarotds.ru/requirements в зависимости от посещаемости (но там под ихнюю систему).

Слишком абстрактный вопрос.
Для новостного сайта, где весь динамический контент это статьи от сотрудников, с 1000 запросов в секунду справится 1 сервер на котором будет php+mysql+nginx
Для социальной сети, где люди постоянно комментируют, ставят лайки и загружают видео может и 10 серверов не хватить, т.к. там будет говнокод на битриксе
@Hello, спасибо большое за то, что делитесь опытом! Фактически будет новостной сайт, на Symfony, а пользователи смогут просматривать кастомизированы под них страницы сайта + опросник разве что может нагрузить сервер дополнительно. Тоже склоняюсь уже что может один сервер справиться. Ну разве что возможно есть смысл на отдельном сервере хранить css,js,картинки для более скорой загрузки...
Как думаете, 4CPU, 6GB RAM один сервер теоретически должно хватить на подобный сайт (нужно предусмотреть 100 тыс посетителей в день)?
 

MiksIr

miksir@home:~$
Проект уже нагружен на 60 тыс посетителей в день, но там то ли asp, то ли что-то другое. Нужно вот просчитать ресурсы, с учетом того, что будет перенос на Symfony. Если бы проект был с нуля, то понятное дело @MiksIr, все нужно делать так как Вы говорите.
Берете существующий код, измеряете время отклика при 10-15 конкурентных запросах (в идеале - тестировать реальные кейсы использования сайта человеком, но для первого приближения сойдет и просто время отклика одной обычной страницы).
Берете свой код на симфони и на той же тестовой платформе измеряете его. Если время отклика такое же, как и у старого сайта - то того сервера, на котором крутится сейчас старый сайт - хватит и для нового.
Это очень приблизительно, конечно, но как предварительная оценка - покатит
 

Hello

Новичок
@Volodya, новостные сайты очень легко кешируются, и без разницы какой будет фреймворк.
Современный сервер с такой конфигурацией без проблем вытянет 500 тыс пользователей
 

antson

Новичок
Партнер клуба
@Volodya, главное чтобы разработчик не увлекался ооп . А то я 5 лет назад видел новостной портал у которого при протухании кеша главной страницы шло 400 запросов в базу
 

Adelf

Administrator
Команда форума
@Volodya, главное чтобы разработчик не увлекался ооп . А то я 5 лет назад видел новостной портал у которого при протухании кеша главной страницы шло 400 запросов в базу
где связь?
 

fixxxer

К.О.
Партнер клуба
Нет никакой связи.
Я вот щас рефакторю адов говнокод с классической процедурной лапшой, так там безо всяких кэшей почти в каждой функции по n*const запросов, а в паре даже n^2.
Встречаются совсем перлы, когда все это делается для банального счетчика.
 

Breeze

goshogun
Команда форума
Партнер клуба
нужно предусмотреть 100 тыс посетителей в день
У меня один контентный сайт(моего клиента) на 70к уников (в пике 100к, когда реклама идёт) в сутки жил на php + nginx + mysql в конфигурации 4 ядра, 2 Гб памяти с запасом ресурсов 25% в виртуалке kvm.
Потом пришли рубисты и сделали на рельсах новую версию, на те же 70к уников на данный момент мало 8 ядер и 6Гб памяти в виртуалке kvm на той же хардноде, где была предыдущая версия.

Вот и делай выводы, с учётом того, что руби сам по себе не при чём.
 

fixxxer

К.О.
Партнер клуба
Так то рельсы, там by design куча магии на каждый реквест и пофигу на производительность.
 

Breeze

goshogun
Команда форума
Партнер клуба
Так то рельсы, там by design куча магии на каждый реквест и пофигу на производительность.
Да это понятно, речь для ТС про другое. Он спрашивает на тему "4CPU, 6GB RAM", а универсального ответа быть не может.
На одном и том же железе можно летать или выпасть в осадок в зависимости от подхода.
Возьмут какой-нить супер бандл для симфони и до свидания ресурсы :)
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
хорошо вам, а мне надо составить архитектуру на 100 тысяч одновременных пользователей, тут кешем не решить

делать собираюсь на симфони, с увлечением внедрять ООП, разве что без доктрины
 

Breeze

goshogun
Команда форума
Партнер клуба
Что за кеш должен быть, которому 1000 запросов в секунду это много?
Кеш тут не при чём, рекомендую посмотреть сколько весит в среднем главная страница новостных порталов, включая картинки и прочие ресурсы, которые не берутся со стороны.
И посчитать трафик, который будет генерить один сервер, если всё раздавать с него. В условии считаем, что сеть у нас идеальная и задержки равны нулю, а канал стандартный 100 мегабит.
Предвидя тему про "картинки кешируются на клиенте", говорю сразу, что сейчас этим можно пренебречь.
 
Сверху