Подтвердить что ты не робот

Сколько одновременных пользователей может создать веб-приложение, встроенное в Meteor.js?

Мы создаем веб-приложение, которое будет использоваться во время конкурса голосовать за участников и отображать статистику голосования в реальном времени на центральном дисплее.

Конкурс продлится 15 минут, и около 4000 пользователей будут подключаться к веб-приложению в это время и отправить голоса, которые, однако, уникальны для каждого пользовательского устройства.

Мы думаем разработать такое веб-приложение, используя Meteor.js. Однако из-за нашего небольшого опыта в разработке сервисов для такого большого количества одновременных пользователей и бета-состояния Meteor.js у нас есть некоторые сомнения относительно реальной осуществимости проекта.

Ниже приведены вопросы, которые мы рассматриваем:

  • Есть ли какой-либо бенчмарк о том, сколько одновременных пользователей Meteor может справиться? Я полагаю, это зависит от сложности самого веб-приложения. В нашем случае это будет довольно прямолинейно, только клиент, используемый для центрального дисплея, будет подписан на живой запрос Mongo votes.find({}), остальные пользователи будут видеть только кнопку vote/already voted.

Наличие некоторых данных из реального случая или тестового сценария нам очень помогло.

  1. Будет ли инфраструктура Meteor обрабатывать 4000 пользователей? Или мы должны пойти на какое-то другое решение для хостинга, указанное в этом удаленном вопросе (вам нужно 10k + rep, чтобы увидеть его)?

  2. Есть ли какие-либо соображения производительности, характерные для Meteor.js, мы должны знать?

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

Кроме того, мы могли бы использовать Cluster smart package. У кого-нибудь есть опыт?

4b9b3361

Ответ 1

UPDATE ClassCraft сообщает, что один сервер Meteor обрабатывает 6400 одновременных пользователей. Подробнее читайте в разделе "Масштабируемость" моей статьи "Почему Метеор" .

См. также сообщение на форуме
Сколько одновременных пользователей поддерживает самую большую текущую поддержку Meteor App?


Здесь приведен пример не только о параллельных пользователях, но и о настройке подписки (возможно, более стресс-теста).

Недавно Arunoda опубликовала результаты теста с использованием meteor-down (инструмент тестирования нагрузки аналогичный @alanning meteor-load-test) и Cluster, инструмент балансировки нагрузки Meteor.

Тест проводился на самых дешевых серверах Digital Ocean (512 МБ ОЗУ, 5 долл. США в месяц), и результаты были весьма впечатляющими:

enter image description here

Для всех вышеперечисленных сценариев время отклика сервера меньше 8 мс.

По существу одна товарная машина может обрабатывать 2500 подписчиков Meteor в минуту и ​​отвечать в течение 8 миллисекунд. Горизонтальное масштабирование занимает менее 5%.

Вы можете узнать больше о тесте Тест производительности кластера Meteor: впечатляющие результаты.

Ответ 2

https://github.com/alanning/meteor-load-test

Если вы быстро придумаете приложение, достаточно установить тест на 4000 соединений за 15-минутный период. Я не использовал его лично, но планирую сделать это, как только закончу свое собственное приложение.

Ответ 3

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

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