हमेशा की तरह, आपको अपने उपयोग-मामले के लिए इस तरह की चीजों को बेंचमार्क करने की आवश्यकता है - सामान्य सलाह देना संभव नहीं है। आपको अपने सिस्टम पर या तो सिस्टम-वाइड या रेडिस उपयोगकर्ता के लिए खुली फाइलों की अधिकतम संख्या बढ़ाने की आवश्यकता हो सकती है। यह निश्चित रूप से आपका वेब सर्वर चलाने वाले उपयोगकर्ता पर भी लागू होता है।
उस ने कहा, आपको socket.on('disconnect')
. को सुनना सुनिश्चित करना चाहिए और quit()
रेडिस ग्राहक जब कोई उपयोगकर्ता छोड़ता है। आपको यह जानने में भी दिलचस्पी हो सकती है कि socket.io में रेडिस बैकएंड है, जो रेडिस पब/सब का लाभ उठाता है, और इसमें कमरे की अवधारणा भी है, इसलिए आप इसका उपयोग करके खुद को कुछ परेशानी बचा सकते हैं क्योंकि आप पहले से ही सॉकेट पर निर्भर हैं .io.
संपादित करें: एक त्वरित जांच के बाद, मुझे 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
मेरा सिस्टम (उबंटू 11.11) एक डिफ़ॉल्ट nofile
. के साथ आता है 1024 की सीमा, इसलिए 992 कनेक्टेड क्लाइंट के बाद मेरा त्वरित परीक्षण विफल हो जाना चाहिए, जो परीक्षण से सही लगता है (मेरे पास प्रकाशक के लिए एक क्लाइंट भी है)। मेरा सुझाव है कि आप अपने nofile
. का निरीक्षण करें सीमा (मेरे सिस्टम पर यह /etc/security/limits.{conf,d/*}
में है। और आपका रेडिस maxclients
सेटिंग, और फिर बेंचमार्क, बेंचमार्क, बेंचमार्क!