Som altid skal du benchmarke ting som dette til din egen brug - det er ikke muligt at give generelle råd. Du skal muligvis øge det maksimale antal åbne filer på dit system, enten på hele systemet eller for Redis-brugeren. Dette gælder selvfølgelig også for den bruger, der kører din webserver.
Når det er sagt, skal du sørge for at lytte efter socket.on('disconnect')
og quit()
redis-abonnenten, når en bruger forlader. Du er måske også interesseret i at vide, at socket.io har en redis-backend, som udnytter redis pub/sub, og den har også konceptet med værelser, så du kan spare dig selv for nogle problemer ved at bruge det, da du allerede er afhængig af socket .io.
Rediger: Efter et hurtigt tjek får jeg denne fejlmeddelelse fra Redis efter 991 abonnenter:
Ready check failed: Error: Error: ERR max number of clients reached
Her er fra standarden 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
Mit system (Ubuntu 11.11) kommer med en standard nofile
grænse på 1024, så min hurtige test skulle mislykkes efter 992 tilsluttede klienter, hvilket synes omtrent lige fra testen (jeg har også en klient til udgiveren). Mit forslag til dig er at inspicere din nofile
limit (på mit system er det i /etc/security/limits.{conf,d/*}
og dine redis maxclients
indstilling, og derefter benchmark, benchmark, benchmark!