2012-04-10 18 views
8

¿Cómo están pasando los usuarios un límite de conexión 1024 en Linux en asociación con hacer MQTT para notificación push?mqtt mosquitto linux connection limit

Estoy usando el servidor Mosquitto, que creo que leo no tiene un límite de conexión 1024 integrado en la versión de Linux. Entonces, ¿puedo usar un solo servidor (sin puente, etc.) y obtener 5,000, 10,000+ usuarios?

¿O, necesito absolutamente tender un puente? No he visto mucha escritura sobre cómo se configura esto, aparte de la página del manual de configuración para mosquitto.

O, ¿puedo hacerlo con solo modificar algunos ajustes de configuración de Linux y estoy listo para usar un solo servidor mosquitto?

Mi aplicación es más o menos una aplicación de mensajería instantánea, por lo que espero tener ~ 10,000 o incluso 20,000 personas que la utilicen con conexiones permanentes 24/7 a mosquitto para alertarlos de los mensajes.

Hmmm

Respuesta

8

En teoría, podría subir la configuración de Linux para el número máximo de enchufes para mosquitto a lo que necesita. La pregunta entonces es sobre el rendimiento. La métrica clave es la cantidad total de mensajes por segundo. Si tiene 20k clientes conectados, ¿cuántos estarán activos y cuántos mensajes enviarán cada uno?

Como ejemplo, si la mitad de sus clientes están activos y envía 1 mensaje por segundo, hay 10k msps, por supuesto, solo entrantes. Si cada uno de esos mensajes tiene 10 bytes, tiene 100kB/so sostenidos o 800kbps.

Otro aspecto es cómo se organiza la jerarquía de temas. No puedo decirte qué es lo mejor, pero sin duda tendrá un efecto.

Mi mejor sugerencia sería escribir un cliente que simule una persona real, y luego utilizarlo para tan reales pruebas de su escenario.

He visto ejemplos de clientes extremos: http://bit.ly/HytRpK pero no tengo más detalles.

Un último punto: IBM está produciendo actualmente un libro rojo en MQTT. Debería estar disponible 'en primavera', es decir, pronto. Creo que cubrirá problemas de escala.

+0

Muchas gracias Roger ~ En realidad, no espero que mis clientes sean muy activos en absoluto ... Espero que, en 20,000 clientes, tengan 4 o 5 solicitudes por segundo en total. Toda la comunicación real del usuario va del cliente -> servidor a través de SSL, no de MQTT .. Luego uso MQTT para enviar una notificación al usuario de que llegó un nuevo mensaje. Aproximadamente 4 o 5 veces al día. También uso MQTT para enviar mensajes. datos para * todos * mis usuarios, actualizaciones diarias de noticias realmente. Muy bajos datos/mensajes por segundo. Jerarquía temática: planeaba hacer 1 tema por usuario. Entonces 20,000 temas ... Hmm –

3

no sé de nadie que haya hecho las pruebas de volumen de mosquitto a ese número de conexiones. Supongo que una cosa que podría hacer sería probar una instancia de mosquitto en su tiempo de ejecución elegido y conectar muchos hilos de clientes a ella durante su prueba del sistema.

Se ha demostrado que la implementación de IBM utilizando WebSphere MQ como el intermediario MQTT admite hasta 100.000 conexiones simultáneas. Creo que el broker gratuito RSMB de IBM está limitado a 1024 conexiones.

Es posible que desee considerar cómo ampliar su broker utilizando puentes y un servicio de aprovisionamiento para determinar a qué intermediario conectar nuevos usuarios.

5

Para un cliente probamos el MQTT de IBM WebSphere MQ, aumentando el n. ° de conexiones simultáneas de clientes hasta 240.000 por gestor de colas (tiempo de ejecución MQ, puede tener muchas en un clúster MQ). Me dijeron que es algo así como 10 veces más de lo que razonablemente es manejado por un servidor web Apache. La CPU del servidor durante la prueba fue baja en < 5%. Habría seguido aumentando el número de clientes concurrentes de MQTT mucho más allá de 240,000, pero el laboratorio se quedó sin máquinas cliente de prueba de carga. IBM MQ es el proveedor pub/sub incrustado en WebSphere Message Broker ESB, por lo que espero que tenga el mismo resultado.