Som alltid måste du jämföra saker som detta för ditt eget bruk -- det är inte möjligt att ge allmänna råd. Du kan behöva öka det maximala antalet öppna filer på ditt system, antingen för hela systemet eller för Redis-användaren. Detta gäller naturligtvis även för användaren som kör din webbserver.
Som sagt, du bör se till att lyssna efter socket.on('disconnect')
och quit()
redis-abonnenten när en användare lämnar. Du kanske också är intresserad av att veta att socket.io har en redis backend, som utnyttjar redis pub/sub, och den har också konceptet med rum, så du kan spara dig själv lite problem genom att använda det eftersom du redan är beroende av socket .io.
Redigera: Efter en snabb kontroll får jag detta felmeddelande från Redis efter 991 prenumeranter:
Ready check failed: Error: Error: ERR max number of clients reached
Här är från 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
Mitt system (Ubuntu 11.11) kommer med en standard nofile
gräns på 1024, så mitt snabbtest bör misslyckas efter 992 anslutna klienter, vilket verkar ungefär direkt från testet (jag har också en klient för utgivaren). Mitt förslag till dig är att inspektera din nofile
limit (på mitt system finns det i /etc/security/limits.{conf,d/*}
och dina redis maxclients
inställning, och sedan benchmark, benchmark, benchmark!