2012-04-10 7 views
8

In che modo gli utenti superano un limite di 1024 connessioni in Linux in associazione con l'esecuzione di MQTT per la notifica push?mqtt mosquitto limite di connessione linux

Sto usando il server Mosquitto, che penso di aver letto non ha un limite di 1024 connessioni incorporato nella versione di Linux. Quindi, posso utilizzare un singolo server (senza bridging, ecc.) E ottenere 5.000, 10.000+ utenti?

Oppure, ho assolutamente bisogno di un ponte? Non ho visto molti scritti su come questa configurazione sia diversa dalla pagina man delle impostazioni di configurazione per mosquitto.

Oppure, posso fare a meno di modificare alcune impostazioni di configurazione di Linux e sono a posto con un singolo server mosquitto?

La mia app è più o meno un'app di messaggistica istantanea, quindi mi aspetto di avere ~ 10.000 forse anche 20.000 persone che lo utilizzano con connessioni 24/7 permanenti al mosquitto per avvisarli dei messaggi.

Hmmm

risposta

8

In teoria, è possibile impostare Linux per il numero massimo di socket per mosquitto in base alle proprie esigenze. La domanda quindi riguarda le prestazioni. La metrica chiave è il numero di messaggi al secondo totale. Se hai 20k client connessi, quanti saranno attivi e quanti messaggi invieranno?

Ad esempio, se metà dei client è attiva e invia 1 messaggio al secondo, ci sono 10k msps - solo in entrata ovviamente. Se ognuno di questi messaggi è 10 byte, sei a 100kB/s sostenuti o 800kbps.

Un altro aspetto riguarda la disposizione della gerarchia degli argomenti. Non posso dirti cosa è meglio, ma avrà sicuramente un effetto.

Il mio suggerimento migliore sarebbe quello di scrivere un client che simuli una persona reale, quindi utilizzarlo per verificare in modo reale lo scenario.

Ho visto esempi di numero estremo di client: http://bit.ly/HytRpK ma non ho altri dettagli.

Un ultimo punto: IBM sta attualmente producendo un redbook su MQTT. Dovrebbe essere disponibile 'in primavera', cioè presto. Penso che coprirà problemi di ridimensionamento.

+0

Grazie mille Roger ~ In realtà non mi aspetto che i miei clienti siano molto attivi ... Mi aspetto che oltre 20.000 clienti abbiano forse 4 o 5 richieste al secondo totali. Tutte le comunicazioni utente effettive vanno da client -> server via SSL, non MQTT .. Quindi uso MQTT per inviare una notifica all'utente di un nuovo messaggio arrivato .. Circa 4 o 5 volte al giorno uso anche MQTT per spingere dati per * tutti * i miei utenti, aggiornamenti quotidiani di notizie davvero .. Quindi dati molto bassi/messaggi al secondo .. Gerarchia degli argomenti - Avevo intenzione di fare 1 argomento per utente. Quindi 20.000 argomenti .. Hmm –

3

Non so di chi ha fatto il test volume di mosquitto a quel numero di connessioni. Suppongo che una cosa che potresti fare sarebbe testare un'istanza di mosquitto sul runtime scelto e connetterti molti thread client durante il test del tuo sistema.

L'implementazione di IBM che utilizza WebSphere MQ come broker MQTT ha dimostrato di supportare fino a 100.000 connessioni simultanee. Credo che il broker gratuito RSMB di IBM sia limitato a 1024 connessioni.

Si potrebbe prendere in considerazione come ridimensionare il broker utilizzando i bridge e un servizio di provisioning per determinare a quale broker connettere i nuovi utenti.

5

Per un cliente abbiamo testato MQTT di IBM WebSphere MQ, aumentando il numero di connessioni client simultanee fino a 240.000 per gestore code (runtime MQ, è possibile avere molti in un cluster MQ). Mi è stato detto che è qualcosa come 10 volte di più di quanto sia ragionevolmente gestito da un server web Apache. La CPU del server durante il test era bassa a < 5%. Avrebbe continuato ad aumentare il numero di client MQTT simultanei ben oltre 240.000, ma il laboratorio ha esaurito il carico delle macchine client di test. IBM MQ è il provider pub/sub incorporato in ESB di WebSphere Message Broker quindi mi aspetto che abbia lo stesso risultato.