Както винаги, трябва да сравните неща като това за вашия собствен случай на употреба - не е възможно да дадете общи съвети. Може да се наложи да увеличите максималния брой отворени файлове във вашата система, за цялата система или за потребителя на redis. Това се отнася и за потребителя, който работи с вашия уеб сървър, разбира се.
Въпреки това трябва да се уверите, че слушате за socket.on('disconnect')
и quit()
абоната на redis, когато потребител напусне. Може също да се интересувате да знаете, че socket.io има бекенд на redis, който използва redis pub/sub, и също така има концепцията за стаи, така че може да си спестите някои проблеми, като го използвате, тъй като вече сте зависими от сокета .io.
Редактиране: След бърза проверка получавам това съобщение за грешка от Redis след 991 абонати:
Ready check failed: Error: Error: ERR max number of clients reached
Ето от 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
Моята система (Ubuntu 11.11) идва с nofile
по подразбиране ограничение от 1024, така че моят бърз тест трябва да се провали след 992 свързани клиента, което изглежда точно от теста (имам и един клиент за издателя). Моето предложение към вас е да проверите вашия nofile
ограничение (в моята система е в /etc/security/limits.{conf,d/*}
и вашите redis maxclients
настройка и след това еталон, еталон, еталон!