Esplorazione del limite di Jitsi Meet: Jitsi è in grado di gestire più di 1000 utenti in un singolo shard?
Introduzione:
Nel nostro viaggio per ospitare grandi raduni virtuali, volevamo determinare la capacità di un singolo shard in Jitsi Meet, valutandone le prestazioni in diversi scenari. Ci siamo concentrati su due distinti approcci di ricerca: uno prevedeva di ospitare una singola conferenza per valutarne il punto di rottura, mentre l'altro esplorava più conferenze con un basso numero di partecipanti in ciascuna.
Ospitare una singola conferenza
Impostazione dell'ambiente
La nostra ricerca è iniziata con la configurazione del nostro ambiente AWS. Abbiamo distribuito due server: uno dedicato a Jitsi Meet, inclusi Prosody e Jicofo, e l'altro allocato per Jitsi Videobridge (JVB). Per la nostra fase di test iniziale, abbiamo optato per un server c6a.large, dotato di 2 vCPU e 4 GB di memoria. Data la natura single-threaded di Prosody, abbiamo selezionato un server Compute Optimized con solo 2 core per gestire l'attività. Per ospitare circa 1000-1500 utenti, abbiamo utilizzato un server c5a.12xlarge con 48 vCPU e 96 GB di memoria per JVB. Dopo un'attenta selezione del server, abbiamo proceduto all'installazione di Jitsi Meet.
Simulazione della riunione:
In Meetrix, abbiamo sfruttato il nostro meccanismo di test di carico, utilizzando bot per replicare scenari di riunioni reali con utenti abilitati al video. Il nostro obiettivo era identificare quando la riunione avrebbe incontrato problemi.
Durante la configurazione di Jitsi Meet, abbiamo designato una sala riunioni dedicata (nome sala: load0) esclusivamente per questo test di carico, popolata con bot abilitati al video.
Nella fase iniziale, abbiamo aggiunto gradualmente 50 bot alla volta, raggiungendo i 250 partecipanti. Abbiamo monitorato attentamente i log del backend per eventuali anomalie in Prosody, Jicofo, Nginx e JVB. Quando abbiamo osservato il funzionamento regolare delle funzionalità principali delle riunioni, siamo passati alla fase successiva.
Nella seconda fase, abbiamo continuato ad aumentare il numero di bot di 50 in ogni round fino a raggiungere i 500 partecipanti. I problemi di backend sono rimasti assenti e la funzionalità delle riunioni è rimasta stabile, sebbene siano stati notati piccoli ritardi nella reattività dei pulsanti.
Passando alla terza fase, abbiamo aumentato il numero di partecipanti a 750, senza riscontrare ancora problemi di backend. Tuttavia, il frontend ha mostrato segni di cedimento, tra cui occasionali interruzioni video e latenza aumentata.
Dopo aver raggiunto i 1000 partecipanti nella quarta fase, l'utilizzo delle risorse del server, in particolare in Prosody, è aumentato. Mentre il backend è rimasto stabile, il frontend ha sperimentato un ritardo evidente, con persino operazioni di base come l'apertura della barra degli strumenti che hanno richiesto più tempo.
Quando ci siamo avvicinati ai 1250 partecipanti nell'ultima fase, le prestazioni del frontend sono peggiorate. Problemi di lag e usabilità sono diventati evidenti, segnalando che avevamo raggiunto il punto di rottura del sistema.
In sintesi, i nostri test indicano che una singola conferenza in Jitsi Meet senza personalizzazioni può ospitare comodamente circa 200-250 partecipanti senza riscontrare problemi. È importante notare che le prestazioni del browser della macchina host svolgono un ruolo fondamentale nel determinare questo limite; prestazioni del browser superiori possono consentire più partecipanti. Si noti che se sono state apportate personalizzazioni frontend, ciò potrebbe influire sulle prestazioni e sulla stabilità della riunione, rendendo difficile il raggiungimento di questi obiettivi.
La maggior parte delle sfide incontrate erano associate al frontend, poiché non sono stati registrati problemi sostanziali al backend. Ciò suggerisce che un singolo shard di Jitsi Meet può gestire efficacemente fino a 1000 partecipanti, sebbene il numero preciso possa variare a seconda di fattori quali le condizioni della rete e le capacità dell'hardware virtuale.
Ospitare più conferenze
Impostazione dell'ambiente
Nel nostro secondo approccio, abbiamo impiegato lo script terraform di Meetrix per un'installazione rapida e a basso overhead di una configurazione a singolo shard. Questa configurazione consisteva in un server Jitsi Meet (c6a.large), un server Coturn (t3a.micro) e un gruppo di autoscaling JVB (ciascuno che utilizzava c6a.xlarge). Come accennato nell'approccio precedente, abbiamo continuato a scegliere server ottimizzati per il calcolo sia per il server meet che per i server JVB.
Simulazione della riunione:
In questo approccio, il nostro obiettivo era ospitare 100 riunioni, ciascuna con circa 10 partecipanti. Ciò ci ha consentito di garantire che un singolo shard potesse gestire efficacemente 1000 utenti, anche con un numero sostanziale di riunioni simultanee. Abbiamo utilizzato lo stesso meccanismo di test di carico di prima, sebbene con un conteggio leggermente inferiore di bot abilitati al video (75%) rispetto all'approccio precedente (100%).
Abbiamo introdotto circa 100 bot in 10 conferenze. Nella prima fase, monitorando attentamente i log del server e della console, siamo passati a 500 utenti, testando a fondo le funzionalità principali della configurazione. Senza problemi segnalati, siamo passati alla seconda fase, ospitando bot fino a 1000 partecipanti e osservando nuovamente un funzionamento regolare senza riscontrare alcun problema. Nella terza e ultima fase, abbiamo aggiunto altri bot, raggiungendo infine circa 1400 partecipanti distribuiti in 100 riunioni simultanee. Abbiamo attentamente garantito che le funzioni della riunione funzionassero senza problemi in molte riunioni. In questa fase, dopo aver raggiunto la stabilità, Prosody sembrava consumare quasi il 20% delle risorse della CPU. Mantenendo questa configurazione per diversi minuti senza errori, abbiamo concluso il test di carico.
Conclusione
In sintesi, i nostri test dimostrano che un singolo shard di Jitsi Meet può gestire efficacemente 1000 partecipanti senza riscontrare alcun problema. Si consiglia di utilizzare un server CPU-ottimizzato per Jitsi Meet per massimizzare le prestazioni.
Mentre continuiamo a esplorare i limiti delle riunioni virtuali, Jitsi Meet rimane una soluzione solida con il potenziale per una scalabilità ancora maggiore in futuro.
Riferimenti:
Approccio 1:
Approccio 2:
Se hai bisogno di supporto per espandere il limite di Jitsi Meet o di assistenza nella gestione di oltre 1000 utenti su Jitsi, il nostro team è disponibile per il supporto commerciale di Jitsi. Siamo specializzati nell'ottimizzazione degli ambienti Jitsi Meet per grandi eventi virtuali e possiamo aiutarti con l'ottimizzazione delle prestazioni, le configurazioni personalizzate e il miglioramento della scalabilità. Non esitare a contattarci per una consulenza esperta al fine di ottenere prestazioni ottimali per la tua configurazione. Contatta Meetrix all'indirizzo hello@meetrix.io.