178 votes

Nombre maximal de connexions Socket.IO simultanées

Cette question a été posée précédemment, mais pas récemment et pas avec une réponse claire.

En utilisant Socket.io, y a-t-il un nombre maximum de connexions simultanées que l'on peut maintenir avant de devoir ajouter un autre serveur ?

Quelqu'un connaît-il des environnements de production actifs qui utilisent les websockets (en particulier socket.io) à grande échelle ? J'aimerais vraiment savoir quelle est la meilleure configuration pour un maximum de connexions ?

Comme les Websockets sont construits au-dessus de TCP, j'ai cru comprendre qu'à moins que les ports ne soient partagés entre les connexions, vous serez limité par la limite de 64K. Mais j'ai également vu des rapports de Connexions 512K avec Gretty . Donc je ne sais pas.

103voto

JAM Points 1520

Cet article peut vous aider dans votre démarche : http://drewww.github.io/socket.io-benchmarking/

Je me suis posé la même question, et j'ai fini par écrire un petit test (utilisant le XHR-polling) pour voir quand les connexions commençaient à échouer (ou à prendre du retard). J'ai trouvé (dans mon cas) que les sockets commençaient à avoir des problèmes vers 1400-1800 connexions simultanées.

Il s'agit d'un court résumé que j'ai fait, similaire au test que j'ai utilisé : https://gist.github.com/jmyrland/5535279

43voto

Salem Chen Points 351

J'ai essayé d'utiliser socket.io sur AWS, je peux tout au plus maintenir environ 600 connexions stables.

Et j'ai découvert que c'est parce que socket.io a d'abord utilisé le polling long et est passé à websocket plus tard.

après avoir configuré la configuration pour utiliser uniquement websocket, je peux maintenir environ 9000 connexions.

Définissez cette configuration du côté client :

const socket = require('socket.io-client')
const conn = socket(host, { upgrade: false, transports: ['websocket'] })

17voto

Daniel Nalbach Points 123

Ce type semble avoir réussi à avoir plus d'un million de connexions simultanées sur un seul serveur Node.js.

http://blog.caustik.com/2012/08/19/node-js-w1m-concurrent-connections/

Je ne sais pas exactement combien de ports il utilisait.

17voto

MajidJafari Points 131

LISEZ LE COMMENTAIRE DE CETTE RÉPONSE AVANT DE POURSUIVRE.

La question porte sur les sockets socket.io, la réponse concerne les sockets natifs. sockets. Ces changements sont dangereux car ils s'appliquent à tout ce qui se trouve sur le système, pas seulement les sockets.io. De plus, les réseaux actuels ne sont jamais le goulot d'étranglement pour socket.io. N'apportez pas ces modifications à votre système sans en comprendre les implications au préalable.

Pour +300k connexions simultanées :

Définissez ces variables dans /etc/sysctl.conf :

fs.file-max = 10000000 
fs.nr_open = 10000000

Modifiez également ces variables dans /etc/security/limits.conf :

* soft nofile 10000000
* hard nofile 10000000
root soft nofile 10000000
root hard nofile 10000000

Et enfin, augmenter les tampons TCP dans /etc/sysctl.conf aussi :

net.ipv4.tcp_mem = 786432 1697152 1945728
net.ipv4.tcp_rmem = 4096 4096 16777216
net.ipv4.tcp_wmem = 4096 4096 16777216

pour plus d'informations, veuillez vous référer à ce .

2voto

Sithcoder Points 21

Après avoir fait les configurations, vous pouvez vérifier en écrivant cette commande sur le terminal

sysctl -a | grep file

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X