में Booksleeve Redis क्लाइंट का उपयोग करते समय Redis कनेक्शन त्रुटियां मैंने हाल ही में नए Azure VMs पर मेरा एक साइड प्रोजेक्ट होस्ट करना शुरू कर दिया है। ऐप रेडिस को इन-मेमोरी कैश के रूप में उपयोग करता है। सबकुछ मेरे स्थानीय माहौल में ठीक काम कर रहा था, लेकिन अब जब मैं कोड को Azure में ले गया हूं तो मुझे बुक्सलीव से बाहर आने वाले कुछ अजीब अपवाद देख रहे हैं।Azure VM
जब ऐप पहली बार आग लग जाता है तो सब ठीक काम करता है। हालांकि, लगभग 5-10 मिनट निष्क्रियता के बाद ऐप के अगले अनुरोध को नेटवर्क अपवाद का अनुभव होता है (मैं अभी काम पर हूं और मेरे पास सही त्रुटि संदेश नहीं हैं, इसलिए जब मैं घर लौटाता हूं तो मैं उन्हें पोस्ट करूंगा लोग सोचते हैं कि वे चर्चा के लिए जर्मनी हैं) इससे आंतरिक संदेश क्यूई बंद हो जाता है, जिसके परिणामस्वरूप प्रत्येक अनुवर्ती एंक्यू() एक अपवाद फेंकता है ("कतार बंद है")।
तो कुछ googling के बाद मुझे यह SO पोस्ट मिला: Maintaining an open Redis connection using BookSleeve एक DIY कनेक्शन प्रबंधक के बारे में। अगर मैं कार्रवाई का सबसे अच्छा तरीका हूं तो मैं निश्चित रूप से कुछ इसी तरह कार्यान्वित कर सकता हूं।
तो, सवाल:
- यह सामान्य RedisConnection समय की एक निश्चित राशि के बाद समय-समय पर बंद करने के लिए के लिए है?
- मैंने
conn.SetKeepAlive()
विधि देखी है लेकिन मैंने कई अलग-अलग मानों की कोशिश की है और कोई भी कोई फर्क नहीं पड़ता है। क्या इसके लिए और क्या मैं गलत पेड़ को भड़क रहा हूं? - क्या इस परिदृश्य को संभालने के लिए सबसे ऊपर दिए गए पोस्ट से कनेक्शन प्रबंधक विचार है?
- क्या कोई भी इस बात का कोई कारण नहीं उठा सकता कि मेरे रेडिस इंस्टेंस को नए एज़ूर वीएम में क्यों होस्ट करना इस मुद्दे का कारण बनता है? मैं यह भी पुष्टि कर सकता हूं कि अगर मैं Azure Redis VM के खिलाफ अपना स्थानीय वातावरण चलाता हूं तो मुझे इस समस्या का अनुभव होता है।
जैसा कि मैंने कहा, अगर निष्क्रियता के बाद रेडिस कनेक्शन मरने के लिए असामान्य है, तो मैं घर आने पर अपने लॉग से स्टैक निशान और अपवाद पोस्ट करूंगा।
धन्यवाद!
अद्यतन डिडिएर टिप्पणी है कि इस भार balanacer कि Azure का उपयोग करता है से संबंधित हो सकता में बताया: http://blogs.msdn.com/b/avkashchauhan/archive/2011/11/12/windows-azure-load-balancer-timeout-details.aspx
मान लिया जाये कि ऐसी बात है, क्या एक कनेक्शन प्रबंधक है कि सकता है लागू करने के लिए सबसे अच्छा तरीका है इस मूर्ख समस्या के लिए खाते हैं। मुझे लगता है कि मुझे सही काम की प्रति इकाई कनेक्शन नहीं बनाना चाहिए?
रेडिस कॉन्फ़िगरेशन फ़ाइल के टाइमआउट पैरामीटर में आपके पास क्या है? यह निष्क्रिय टाइमआउट है (रेडिस क्लोजिंग निष्क्रिय कनेक्शन से बचने के लिए इसे 0 पर सेट करें)। –
टाइमआउट पहले से ही 0 पर सेट है। बस इसे दो बार भी चेक किया। :( – Eric
यह AzureVM का "फीचर" प्रतीत होता है ... http://blogs.msdn.com/b/avkashchauhan/archive/2011/11/12/windows-azure-load-balancer-timeout- विवरण देखें .aspx –