Seperti biasa, Anda perlu membandingkan hal-hal seperti ini untuk kasus penggunaan Anda sendiri -- tidak mungkin memberikan saran umum. Anda mungkin perlu menambah jumlah maksimum file terbuka di sistem Anda, baik di seluruh sistem atau untuk pengguna redis. Ini juga berlaku untuk pengguna yang menjalankan server web Anda, tentunya.
Karena itu, Anda harus memastikan untuk mendengarkan socket.on('disconnect')
dan quit()
pelanggan redis saat pengguna pergi. Anda mungkin juga tertarik untuk mengetahui bahwa socket.io memiliki backend redis, yang memanfaatkan redis pub/sub, dan juga memiliki konsep kamar, jadi Anda dapat menghemat masalah dengan menggunakannya karena Anda sudah bergantung pada soket .io.
Sunting: Setelah pemeriksaan cepat, saya mendapatkan pesan kesalahan ini dari Redis setelah 991 pelanggan:
Ready check failed: Error: Error: ERR max number of clients reached
Ini dari redis.conf
default :
# 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
Sistem saya (Ubuntu 11.11) dilengkapi dengan nofile
default batas 1024, jadi tes cepat saya akan gagal setelah 992 klien terhubung, yang tampaknya benar dari pengujian (saya juga punya satu klien untuk penerbit). Saran saya kepada Anda adalah untuk memeriksa nofile
Anda limit (di sistem saya ada di /etc/security/limits.{conf,d/*}
dan maxclients
redis Anda pengaturan, lalu tolok ukur, tolok ukur, tolok ukur!