Nous avons récemment testé l’évolutivité de NGINX pour équilibrer la charge des connexions WebSocket . Même avec 50 000 connexions WebSocket actives, NGINX nécessitait moins de 1 Go de mémoire et moins d'un cœur de capacité CPU, et lorsqu'il était chargé avec des connexions très occupées, l'utilisation de la mémoire était stable et augmentait plus lentement que la taille des messages. Les performances de votre environnement dépendront de la nature de votre application, mais les résultats de ces tests peuvent fournir une indication de la quantité de ressources que vous pouvez vous attendre à ce que NGINX utilise.
Les machines suivantes ont été utilisées pour ces tests :
Nous avons effectué deux séries de tests.
La première série de tests a simulé des connexions de longue durée et principalement inactives. Le nombre de connexions variait de 1 000 à 50 000, la taille des messages de 10 à 4 096 octets et la fréquence des messages de 0,1 à 10 secondes (que nous considérions comme faible).
Les résultats montrent que la mémoire totale nécessaire aux connexions WebSocket dépend du nombre de connexions et que la mémoire utilisée par connexion est cohérente. L'utilisation de la mémoire n'est pas affectée par la taille ou la fréquence des messages. L'utilisation du processeur évolue essentiellement en fonction du nombre de connexions et même à 50 000 connexions, il n'utilisait pas un cœur de processeur complet. L'utilisation du processeur représentée ici est normalisée sur un seul cœur en additionnant l'utilisation du processeur sur tous les cœurs. Les graphiques suivants montrent les résultats de cet ensemble de tests :
La deuxième série de tests a simulé des connexions de courte durée mais très actives. Le nombre de connexions simultanées a été maintenu constant à 500, avec 50 messages par connexion et aucun délai entre les messages. La taille du message variait de 1 à 4096 octets
Les résultats montrent qu'avec un nombre fixe de connexions simultanées, l'utilisation totale de la mémoire est un facteur de la taille du message, tout comme la mémoire utilisée par connexion, mais dans les deux cas, la quantité de mémoire ne varie pas beaucoup et varie de manière sous-linéaire, augmentant de moins de 15 %.
Au cours de ces tests, NGINX a fourni des performances prévisibles et évolutives lors de la mise en proxy des serveurs WebSocket. Il s'agissait de tests synthétiques et pas nécessairement représentatifs d'une application réelle. Les résultats des tests effectués sur d'autres systèmes peuvent donc différer. Pour plus d'informations, veuillez consulter :
« Cet article de blog peut faire référence à des produits qui ne sont plus disponibles et/ou qui ne sont plus pris en charge. Pour obtenir les informations les plus récentes sur les produits et solutions F5 NGINX disponibles, explorez notre famille de produits NGINX . NGINX fait désormais partie de F5. Tous les liens NGINX.com précédents redirigeront vers un contenu NGINX similaire sur F5.com."