javascript - ¿Cuántos usuarios concurrentes puede manejar una aplicación web creada en Meteor.js?
scalability (3)
Estamos construyendo una aplicación web que se utilizará durante un concurso para votar a los concursantes y mostrar las estadísticas de votación en tiempo real en una pantalla central.
El concurso durará 15 minutos y alrededor de 4000 usuarios se conectarán a la aplicación web en ese lapso de tiempo y enviarán votos, que sin embargo son únicos por dispositivo de usuario.
Estamos pensando en desarrollar dicha aplicación web usando Meteor.js. Sin embargo, debido a nuestra poca experiencia en el desarrollo de servicios para una gran cantidad de usuarios simultáneos y el estado beta de Meteor.js, tenemos algunas preocupaciones con respecto a la factibilidad real del proyecto.
Las siguientes son las preguntas que estamos abordando:
- ¿Hay algún punto de referencia sobre cuántos usuarios concurrentes Meteor puede manejar? Supongo que esto depende de la complejidad de la aplicación web en sí. En nuestro caso, sería bastante sencillo, solo el cliente utilizado para la pantalla central se suscribirá a la consulta en vivo de Mongo
votes.find({})
, el resto de los usuarios solo verán el botón votar / ya votado .
Tener algunos datos de un caso real o escenario de prueba nos ayudaría mucho.
¿La infraestructura de Meteor podría manejar 4000 usuarios? ¿O deberíamos buscar alguna otra solución de alojamiento como se detalla en esta pregunta eliminada (necesitas 10k + representante para verla)?
¿Hay alguna consideración de rendimiento específica para Meteor.js que debemos tener en cuenta?
Ya vimos publicaciones similares, pero ninguna de ellas se ocupó de una gran cantidad de usuarios en tan poco tiempo:
- ¿Cuánta carga manejan los servidores de meteoritos? (2013)
- ¿Qué tan eficiente puede ser Meteor al compartir una gran colección entre muchos clientes?
Además, podríamos usar el paquete inteligente de Cluster . Alguien tiene alguna experiencia con esto?
Creo que la respuesta honesta es que cada caso es diferente, y no hay reglas duras y rápidas que la gente pueda darle en términos de cómo su sistema funcionará bajo diferentes cargas.
Su mejor opción es construir realmente un prototipo simple de su sistema, con una o dos funciones, y luego buscar ejecutar algunas pruebas de rendimiento usando múltiples usuarios simultáneos para determinar cuáles son las limitaciones. Esto debería darle una buena base para luego iterar en su prototipo y determinar si / cómo puede respaldar la cantidad de usuarios que necesita.
https://github.com/alanning/meteor-load-test
Si simula la aplicación rápidamente, debería ser bastante sencillo configurar una prueba para 4000 conexiones durante un período de 15 minutos. No lo he usado personalmente, pero pienso hacerlo una vez que termine de desarrollar mi propia aplicación.
ACTUALIZACIÓN ClassCraft informa que un servidor Meteor maneja 6400 usuarios simultáneos. Lea más en la sección Escalabilidad de mi artículo Why Meteor .
Ver también la publicación del foro
¿Cuántos usuarios simultáneos admite la aplicación de meteorología actual más grande?
Aquí hay un punto de referencia no exactamente sobre usuarios simultáneos, sino sobre la configuración de suscripciones (posiblemente una prueba más estresante).
Arunoda ha publicado recientemente los resultados de una prueba utilizando meteor-down
(una herramienta de prueba de carga similar a @ alanning''s meteor-load-test ) y Cluster , una herramienta de equilibrio de carga Meteor.
La prueba se ejecutó en los servidores Ocean Digital más baratos (512 MB de RAM, $ 5 por mes), y los resultados fueron bastante impresionantes:
Para todos los escenarios anteriores, el tiempo de respuesta del servidor es inferior a 8 ms.
Esencialmente, una máquina de productos puede manejar 2500 suscripciones de Meteor por minuto y responder dentro de 8 milisegundos. La escala horizontal requiere menos del 5% de sobrecarga.
Puede leer más sobre la prueba en Meteor Cluster Performance Test: Impresionantes resultados .