जैसा कि यह पता चला है, increase max_dbs_open
पर संदेश सबसे अच्छा आंशिक उत्तर है और सबसे खराब भ्रामक है। हमारे मामले में समस्या उन डेटाबेसों की संख्या नहीं थी जो खुली थीं लेकिन स्पष्ट रूप से हमारे कई प्रतिकृतियों द्वारा उपयोग किए जाने वाले HTTP कनेक्शन की संख्या थी।
प्रत्येक प्रतिकृति min(worker_processes + 1, http_connections)
उपयोग कर सकते हैं जहां worker_processes
प्रत्येक प्रतिकृति और http_connections
करने के लिए सौंपा श्रमिकों की संख्या में वर्णित in this document के रूप में प्रत्येक प्रतिकृति के लिए आवंटित HTTP कनेक्शन की अधिकतम संख्या है।
तो इस्तेमाल किया कनेक्शन की कुल संख्या
number of replications * min(worker_processes + 1, http_connections)
worker_processes
का डिफ़ॉल्ट मान 4 है और http_connections
का डिफ़ॉल्ट मान 20 है 100 अनुकरण, प्रतिकृति द्वारा उपयोग किए गए HTTP कनेक्शन की कुल संख्या देखते हैं तो 500 है। एक और सेटिंग, max_connections
, निर्धारित करता है कि HTTP कनेक्शन की अधिकतम संख्या को CouchDB सर्वर in this document वर्णित करने की अनुमति देगा। डिफ़ॉल्ट 2048 है।
हमारे मामले में प्रत्येक उपयोगकर्ता के पास दो प्रतिकृतियां होती हैं - उपयोगकर्ता से मास्टर डेटाबेस में और उपयोगकर्ता के लिए मास्टर डेटाबेस से दूसरा। इसलिए, हमारे मामले में, डिफ़ॉल्ट सेटिंग्स के साथ, प्रत्येक बार जब हम उपयोगकर्ता को जोड़ते थे तो हम एक अतिरिक्त 10 HTTP कनेक्शन जोड़ रहे थे जो अंततः डिफ़ॉल्ट max_connections
के माध्यम से उड़ रहे थे।
चूंकि हमारे अनुकरण न्यूनतम और केवल डेटा की एक छोटी राशि कर रहे हैं मास्टर करने के लिए और उपयोगकर्ता के लिए गुरु से उपयोगकर्ता से ले जाया जाता है, हम वापस संख्या worker_processes
की http_connections
डायल, वृद्धि हुई max_connections
और सब कुछ ठीक है।
अद्यतन
अन्य निष्कर्षों
यह जरूरी हो गया था इसे और अधिक खुले कनेक्शनों
अनुकरण बहुत जल्दी भी वजह से बनाना है करने के लिए अनुमति देने के लिए प्रक्रिया पर ulimit बढ़ाने के लिए की एक जोड़े समस्या का। अगर मैंने वापस डायल किया कि मैंने कितनी जल्दी नई प्रतिकृतियां बनाई हैं तो इससे समस्या को कम करने में भी मदद मिली। YMMV।
क्या यह समस्या हुई थी क्योंकि प्रत्येक उपयोगकर्ता डेटाबेस और मास्टर डेटाबेस की प्रतिकृतियां दो अलग-अलग कॉच डीबी प्रक्रियाओं के बीच थीं? मैं कुछ ऐसा करने की कोशिश कर रहा हूं, लेकिन उपयोगकर्ता डेटाबेस और मास्टर डेटाबेस एक ही सर्वर पर होस्ट किए जाते हैं ताकि उम्मीद है कि मैं किसी भी आईपीसी का उपयोग करने से बचूंगा। – pokstad