Jako vždy musíte věci, jako je toto, porovnávat pro svůj vlastní případ použití - není možné poskytnout obecnou radu. Možná budete muset zvýšit maximální počet otevřených souborů ve vašem systému, buď v rámci celého systému, nebo pro uživatele redis. To platí samozřejmě také pro uživatele provozujícího váš webový server.
To znamená, že byste se měli ujistit, že posloucháte socket.on('disconnect')
a quit()
předplatitel redis, když uživatel odejde. Také by vás mohlo zajímat, že socket.io má backend redis, který využívá redis pub/sub, a má také koncept místností, takže si tím můžete ušetřit nějaké problémy, protože jste již závislí na socketu. .io.
Upravit: Po rychlé kontrole dostávám od Redis po 991 odběratelích tuto chybovou zprávu:
Ready check failed: Error: Error: ERR max number of clients reached
Zde je výchozí 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
Můj systém (Ubuntu 11.11) je dodáván s výchozím nofile
limit 1024, takže můj rychlý test by měl selhat po 992 připojených klientech, což se zdá hned z testu (mám také jednoho klienta pro vydavatele). Navrhuji vám zkontrolovat váš nofile
limit (v mém systému je to v /etc/security/limits.{conf,d/*}
a vaši redis maxclients
nastavení a poté benchmark, benchmark, benchmark!