हमारे पास कुछ उत्पादन प्रणालियां हैं जिन्हें हाल ही में आभासी मशीनों में परिवर्तित किया गया था। हमारा एक ऐसा एप्लिकेशन है जो अक्सर एक MySQL डेटाबेस को एक्सेस करता है, और प्रत्येक क्वेरी के लिए यह कनेक्शन, क्वेरीज़ बनाता है और इस कनेक्शन को डिस्कनेक्ट करता है।
यह क्वेरी करने के लिए उपयुक्त तरीका नहीं है (मुझे पता है), लेकिन हमारे पास ऐसी बाधाएं हैं जिन्हें हम चारों ओर ले जा सकते हैं। वैसे भी, मुद्दा यह है: जबकि मशीन एक भौतिक मेजबान थी, कार्यक्रम ठीक चला। एक बार एक वर्चुअल मशीन में परिवर्तित होने के बाद, हमने डेटाबेस के लिए रुक-रुक कर कनेक्शन के मुद्दों को देखा। एक समय में, TIME_WAIT में 24000+ सॉकेट कनेक्शन थे (भौतिक होस्ट पर, मैंने जो सबसे अधिक देखा वह 17000 था - अच्छा नहीं था, लेकिन समस्याओं का कारण नहीं था)।
मैं चाहूंगा कि इन कनेक्शनों का पुन: उपयोग किया जाए, ताकि हमें वह कनेक्शन समस्या दिखाई न दे, और:
प्रशन:
क्या tcp_tw_reuse का मान 1 पर सेट करना ठीक है? स्पष्ट खतरे क्या हैं? क्या कोई कारण है जो मुझे कभी नहीं करना चाहिए ?
इसके अलावा, TIME_WAIT में इतने सारे कनेक्शनों को जाने से रोकने या उनका पुन: उपयोग करने के लिए सिस्टम (RHEL / CentOS) प्राप्त करने का कोई अन्य तरीका है?
अंत में, tcp_tw_recycle क्या बदल रहा है, और क्या इससे मुझे मदद मिलेगी?
अग्रिम में, धन्यवाद!