Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

माइस्क्ल TIME_WAIT; बहुत अधिक कनेक्शन समस्या

यदि कोई क्लाइंट MySQL-सर्वर से जुड़ता है, तो यह आमतौर पर एक स्थानीय पोर्ट खोलता है, उदाहरण:

 localhost:12345 -> mysqlserver:3306

यदि क्लाइंट कनेक्शन बंद कर देता है, तो क्लाइंट को TIME_WAIT मिलता है। टीसीपी रूटिंग के कारण, अस्थायी बंदरगाह पर एक पैकेट देर से आ सकता है। TIME_WAIT में एक कनेक्शन बस इन पैकेटों को छोड़ देता है। TIME_WAIT के बिना, स्थानीय पोर्ट को किसी अन्य कनेक्शन के लिए पुन:उपयोग किया जा सकता है और पूर्व कनेक्शन से पैकेट प्राप्त हो सकता है।

वेब पर एक उच्च लगातार एप्लिकेशन पर जो प्रति अनुरोध एक mysql- कनेक्शन खोलता है, TIME_WAIT कनेक्शन की एक उच्च मात्रा अपेक्षित है। इसमें कुछ भी गलत नहीं है।

यदि आपकी स्थानीय पोर्ट सीमा बहुत कम है, तो समस्याएँ हो सकती हैं, इसलिए आप आउटगोइंग कनेक्शन को और नहीं खोल सकते। सामान्य टाइमआउट 60 सेकंड पर सेट है। तो कम रेंज पर प्रति सेकंड 400 से अधिक अनुरोधों पर पहले से ही एक समस्या हो सकती है।

जांचें:

TIME_WAIT की राशि की जांच करने के लिए, आप निम्न आदेश का उपयोग कर सकते हैं:

$ cat /proc/net/sockstat
sockets: used 341
TCP: inuse 12 orphan 0 tw 33365 alloc 23 mem 16
UDP: inuse 9 mem 2
UDPLITE: inuse 0
RAW: inuse 0
FRAG: inuse 0 memory 0

"tw" के बाद का मान, इस मामले में 33365, TIME_WAIT की राशि दर्शाता है।

समाधान:

ए। TIME_WAIT ट्यूनिंग (लिनक्स आधारित ओएस उदाहरण):

TIME_WAIT के लिए समयबाह्य कम करें:

# small values are ok, if your mysql server is in the same local network
echo 15 > /proc/sys/net/ipv4/tcp_fin_timeout

स्थानीय पोर्ट के लिए पोर्ट रेंज बढ़ाएँ:

# check, what you highest listening ports are, before setting this
echo 15000 65000 > /proc/sys/net/ipv4/ip_local_port_range

सेटिंग्स /proc/sys/net/ipv4/tcp_tw_recycle और /proc/sys/net/ipv4/tcp_tw_reuse दिलचस्प भी हो सकता है। (लेकिन हमने इन सेटिंग्स के साथ अजीब साइड इफेक्ट्स का अनुभव किया है, इसलिए बेहतर है कि इनसे बचें। इसमें अधिक जानकारी उत्तर )

बी। लगातार कनेक्शन

कुछ प्रोग्रामिंग भाषाएं और पुस्तकालय लगातार कनेक्शन का समर्थन करते हैं। एक अन्य समाधान स्थानीय रूप से स्थापित प्रॉक्सी जैसे "ProxySQL" का उपयोग कर सकता है। यह नए और बंद कनेक्शन की मात्रा को कम करता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ZF2 में Zend\Db लेनदेन को कैसे नियंत्रित करता है?

  2. कैसे जांचें कि रेडियो बटन चेक किया गया है या jQuery में चुना गया है?

  3. एक MySQL डेटाबेस बैक-एंड के फ्रंट-एंड के रूप में MS Access का उपयोग करने में समस्याएँ?

  4. PHP में पूर्णांक के रूप में MySQL से पूर्णांक कैसे प्राप्त करें?

  5. MySQL:किसी समूह पर SUM () TIMEDIFF () कैसे करें?