@EVOSandru6

Как справиться с высокой нагрузкой на сервер?

Добрый день,

Разрабатываю узкоспециализированную систему.
Часть для нее , где необходимы сокеты на NodeJs и Socket.io

Серверная часть на Yii2

Web Server - Apache2

Вот это немного смущает в ТЗ - Посещаемость онлайн чата от 300 авторизовавшихся пользователей. Посещаемость сайта от 5000 авторизовавшихся пользователей единовременно. За минусом индексов в таблицах, кэшированием статических и редкоизменяемых элементов - как еще можно оптимизировать производительность?

Подкиньте пожалуйста информации - куда копать?

Немного рассматривал такие понятия как Балансировка нагрузки и масштабирование серверов. Хотелось бы услышать от профессионалов - какие практики стоит использовать на сегодняшний день.
  • Вопрос задан
  • 734 просмотра
Решения вопроса 5
mitaichik
@mitaichik
Во первых - забудь про Apache. Юзай nginx.
Во вторых - крайне советую проштудировать ruhighload.com, начать можно с https://ruhighload.com/post/%D0%90%D1%80%D1%85%D0%...

В третьих - цифры не говорящие. Важнее кол-во запросов одновременно (ибо 5000 юзеров * 2 запроса в час на каждого - это фигня) и время генерации ответа - вот это важно.

Если реально одновременно 5000 одновременных запросов - на одном сервере с php ты ну прям точно не вытянешь, нужно думать о нескольких бэкендах с балансом нагрузки. Лично я бы при таком варике о php вообще не думал.

А вообще - я бы начал писать как есть а уже в процессе занялся оптимизацеий - все заказчики мнят что у них одновременно в одночасье будет по 5000 юзеров одноврмененно, но жизнь жестока, пусть сначала хотя бы соточку наберут.
Ответ написан
Посещаемость онлайн чата от 300

Чат на ajax?
Ответ написан
@emp1re
cluster если сервер не слабый, легко реализовать.
ну и скалирование, тут уже посложней.
Ответ написан
@Levhav
Возьмусь за разработку проектов любой сложности.
Для чата 300 человек это нагрузка совсем не большая. Из оптимизаций могу посоветовать статью https://habrahabr.ru/company/comet-server/blog/250719/ с помощью этого приёма можно устанавливать одно вебсокет соединение не на каждую открытую вкладку браузера, а сразу на все вкладки одно общее соединение. Соответственно если человек откроет чат на 5 вкладках в одном браузере то такое решение даст пятикратную экономию ресурсов вашего комет сервера.

Вот так я это реализовал в своём проекте кометсервера на C++ https://github.com/CppComet/comet-server/blob/mast...
Ответ написан
Комментировать
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Оптимизация имеет предел и рано или поздно Вы все таки увеличите серверные мощности. Я так понимаю Вы уже многое сделали для оптимизации. Поэтому Ваш вопрос, скорее "хотелось бы поиграться еще с чем-то". В реальном мире, я думаю Ваша проблема решается более мощным сервером, так как это будет проще и дешевле. Хотя "экономия копеек" не имеет предела и очень затягивает и для саморазвития занятие очень полезное, но практично ли это с точки зрения проекта? Не думаю.
Касательно самого вопроса - делаю жирный лайк mitaichik.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
01 мая 2024, в 00:29
2000 руб./за проект
01 мая 2024, в 00:20
15000 руб./за проект
30 апр. 2024, в 23:39
3000 руб./за проект