Como sempre, você precisa comparar coisas como essa para seu próprio caso de uso - não é possível dar conselhos gerais. Pode ser necessário aumentar o número máximo de arquivos abertos em seu sistema, em todo o sistema ou para o usuário redis. Isso também se aplica ao usuário que está executando seu servidor web, é claro.
Dito isso, certifique-se de ouvir
socket.on('disconnect')
e quit()
o assinante redis quando um usuário sai. Você também pode estar interessado em saber que o socket.io tem um back-end redis, que aproveita o redis pub/sub, e também tem o conceito de salas, para que você possa economizar alguns problemas usando isso, pois já depende do soquete .io. Editar: Após uma verificação rápida, recebo esta mensagem de erro do Redis após 991 assinantes:
Ready check failed: Error: Error: ERR max number of clients reached
Aqui está o padrão
redis.conf
:# 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
Meu sistema (Ubuntu 11.11) vem com um padrão
nofile
limite de 1024, então meu teste rápido deve falhar após 992 clientes conectados, o que parece certo desde o teste (eu também tenho um cliente para o editor). Minha sugestão para você é inspecionar seu nofile
limite (no meu sistema está em /etc/security/limits.{conf,d/*}
e seu redis maxclients
configuração e, em seguida, benchmark, benchmark, benchmark!