Shiz
@Shiz
Менеджер, программист, прототипировщик

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

Всем привет!
Планируем запускать проект, с ориентировочной нагрузкой в пике 30 тыс. человек онлайн.
Основная нагрузка будет связана с генерацией страниц и доступом к БД. Используем CakePHP и MySQL.

В связи с этим возникло несколько вопросов:
1. Сколько необходимо серверов и какое у каждого должно быть назначение?
2. Где лучше всего арендовать/размещать?
3. Какие средства использовать для мониторинга нагрузки?
4. Какие средства использовать для стресс-тестирования?
  • Вопрос задан
  • 4701 просмотр
Пригласить эксперта
Ответы на вопрос 5
@phasma
> 1. Сколько необходимо серверов и какое у каждого должно быть назначение?

30 тыщ — один сервер.

> 2. Где лучше всего арендовать/размещать?

Оверсан, Селектел, РосНИИРОС в Курчатнике, который KIAEHOUSE

> 3. Какие средства использовать для мониторинга нагрузки?

cacti, mrtg, свои скрипты на баше, если один сервер. Для большого количества я бы выбрал Zenoss, т.к. мне ближе Python

> 4. Какие средства использовать для стресс-тестирования?

JMeter/Selenium, зависит от задач.
Ответ написан
Комментировать
alekciy
@alekciy
Вёбных дел мастер
Не бывает «30 тыс. онлайн» если это не игра. И даже если это игра, все равно правильнее говорить о количестве запросов в секунду.

1. Количество серверов определяется архитектурой проекта + требуемым потоков запросов. 30кхитов в суточном исчислении ерунда, одного сервера за глаза.

2. Размещение так же зависит от требований проекта. Но если это страницы сайта, то за бугром брать выгоднее, конфирации мощьнее, стоят дешевле, чем в наших ДЦ. Сам беру в Hetzner через fastvds.

4. httperf
Ответ написан
Комментировать
@zuborg
1. 30К человек одновременно? один сервер навряд ли потянет, скорее всего придется строить классический кластер: фронтенды для балансировки -> бекенды для обработки < — дб и кеширующие сервера
Заранее что-то сложно сказать, для начала можно запустить на одном сервере на небольшом трафике и дальше масштабировать самые загруженные елементы.

2. поближе к основной аудитории

4. все равно живой трафик будет определять реальные проблемы архитектуры, запускайте потихоньку
Ответ написан
Комментировать
@shagguboy
боюсь что от MYSQL вам придется отказаться. ищите InMemory БД, например Mongo
Ответ написан
Комментировать
kotomyava
@kotomyava
Системный администратор
1. Вам никто не назовёт этой цифры, без предварительного нагрузочного тестирования вашего конкретного приложения, а если назовёт, это будет заведомое враньё.
2. Зависит от того, где находится ваша целевая аудитория, какой у вас бюджет, какая будет нагрузка.
3. Имеет смысл выбирать после того, как будет понятно, что вам нужно по п.1 для начала можно обойтись каким-нибудь munin или cacti.
4. Например JМeter, подготовив тесты, которые будут приближены к предполагаемой нагрузке, но реальное тестирование на самом деле начнётся когда появятся пользователи, т.к. предсказания часто не сбываются.

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

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

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