e_svirsky
@e_svirsky
Web Developer

Как выдержать нагрузку?

Всем привет.
Планируется большая реклама портала. 4 млн пользователей. Вопрос - как технически выдержать такую огромную нагрузку? Уверен что даже отличное железо не справится. Может кто имел такой опыт? Поделитесь плз.
Слышал что можно распределять запросы. Как можно распределить запрос на 5-10 серверов. Какой стек технологий в этом случае?
Портал написан на symfony.

Спасибо.
  • Вопрос задан
  • 500 просмотров
Решения вопроса 1
Bowen
@Bowen
Японский бог
Посмотрите тут вдруг вам поможет.
Ответ написан
Пригласить эксперта
Ответы на вопрос 6
sim3x
@sim3x
4kk / (60*60*24) = 46 rps
hiload
lol

nginx ( + lua scripts) or nginx plus
настроить апстрим на 1-2 сервера
на серверах пхп-фпм

Если нагрузка только на чтение - справится 1 сервер с хорошим каналом
Апдейт-инсерт потребуют настройки СУБД

Или нанять человека, который понимает, что нужно делать
Ответ написан
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
4 млн одновременно?
4 млн в день?
4 млн в месяц?

4 млн по 1 просмотру?
4 млн по 1000 просмотров, включая страницы с высокой нагрузкой на процессор / память / диск?

4 млн с 95% запросами в бд на чтение?
4 млн с 50% запросами в бд на запись?

...

Понимаете, куда я клоню?

Вообще, то что вы спрашиваете, называется load balancing, или балансировщик нагрузки. Гуглите, изучайте основы и принципы этой архитектуры. Когда освоитесь в теме, сами поймете что делать. Возникнут более точные вопросы по ходу - милости просим.

Если на все это нет времени, наймите специалиста, который задаст вам вагон вопросов и построит подходящее решение на базе того же AWS.

PS: 4 млн уников, если считать "в месяц", это не огромное число. Много, да. Но далеко не огромное и обслуживается достаточно легко.

UPDATE: +1 к ссылке на ruhighload.com от Bowen
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
1. Нагрузка небольшая. (откуда 4млн юзеров уже - пока непонятно, если рассылка - придут 10-15% (~400к), из них зарегятся - тоже 10-15% (~40к) и т.д.)
2. По фронту - лучше бы это был SPA.
3. По запросам к базе - лучше бы делать параллельные независимые запросы к базе в пакетном режиме (аналог поездов и ожидающих пассажиров на платформе)
Итог: если всё сделать грамотно - справится смартфон.
Ответ написан
bagiroff777
@bagiroff777
Веб-разработчик
Потестируйте на виртуалке, сколько запросов в секунду держит ваше приложение.

Первое - вкл. php-opcache, перейдите на php7, включите ккширование.
Далее:
$ yum install -y httpd-tools
$ ab -n 1000 -c 100 https://ваш_сайт/тяжелая страница/
С результатом приходим на тостер и задаем вопрос еще раз.
Ответ написан
Комментировать
Практика показывает - лучше всего закешировать страницы на nginx. Примерно так. А директорию с кешем(proxy_cache_path) расположить на tmpfs.
Тогда все гости получат сверх быстрые ответы от сервера, которые вам ни дадут никакой нагрузки.
Ответ написан
e_svirsky
@e_svirsky Автор вопроса
Web Developer
Спасибо.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы