Como siempre, debe comparar cosas como esta para su propio caso de uso; no es posible dar consejos generales. Es posible que deba aumentar la cantidad máxima de archivos abiertos en su sistema, ya sea para todo el sistema o para el usuario de redis. Esto también se aplica al usuario que ejecuta su servidor web, por supuesto.
Dicho esto, debe asegurarse de escuchar socket.on('disconnect')
y quit()
el suscriptor de redis cuando un usuario se va. También le puede interesar saber que socket.io tiene un backend redis, que aprovecha redis pub/sub, y también tiene el concepto de salas, por lo que puede ahorrarse algunos problemas al usarlo, ya que depende del socket. .io.
Editar: Después de una revisión rápida, recibo este mensaje de error de Redis después de 991 suscriptores:
Ready check failed: Error: Error: ERR max number of clients reached
Aquí está el redis.conf
predeterminado :
# Set the max number of connected clients at the same time. By default
# this limit is set to 10000 clients, however if the Redis server is not
# able ot configure the process file limit to allow for the specified limit
# the max number of allowed clients is set to the current file limit
# minus 32 (as Redis reserves a few file descriptors for internal uses).
#
# Once the limit is reached Redis will close all the new connections sending
# an error 'max number of clients reached'.
#
# maxclients 10000
Mi sistema (Ubuntu 11.11) viene con un nofile
predeterminado límite de 1024, por lo que mi prueba rápida debería fallar después de 992 clientes conectados, lo que parece correcto desde la prueba (también tengo un cliente para el editor). Mi sugerencia para usted es inspeccionar su nofile
limit (en mi sistema está en /etc/security/limits.{conf,d/*}
y su redis maxclients
ajuste, y luego punto de referencia, punto de referencia, punto de referencia!