MySQL कनेक्शन्स सोने के लिए "बहुत लंबा" कब तक है?


38

मैंने डेटाबेस की स्थिति की जांच करने के लिए अपने सर्वर पर लॉग ऑन किया और देखा SHOW PROCESSLIST;कि वहाँ बड़ी संख्या में कनेक्शन सो रहे हैं जो बहुत पुराने हैं।

यहाँ छवि विवरण दर्ज करें कनेक्शन को मारने से पहले कनेक्शन की समय सीमा क्या होनी चाहिए?

मैं MySQL 5.0.51a-3ubuntu5.4 में समय सीमा कैसे तय करूं?

ध्यान दें:

मैं PHP 5.2.x और सिम्फनी फ्रेमवर्क 1.2 का उपयोग कर रहा हूं।


एक विस्तृत ब्लॉग: sforsuresh.in/how-to-delete-sleeping-processes-in-mysql
Suresh Kamrushi

जवाबों:


53

mysqld दो सर्वर विकल्पों के आधार पर डेटाबेस कनेक्शन टाइमआउट करेंगे:

दोनों डिफ़ॉल्ट रूप से 28,800 सेकंड (8 घंटे) हैं।

आप इन विकल्पों को सेट कर सकते हैं /etc/my.cnf

यदि आपके कनेक्शन लगातार हैं (के माध्यम से खोला गया है mysql_pconnect) तो आप इन संख्याओं को 600 (10 मिनट) या 60 (1 मिनट) की तरह कुछ उचित कर सकते हैं। या, यदि आपका ऐप ठीक काम करता है, तो आप डिफ़ॉल्ट छोड़ सकते हैं। यह आप पर निर्भर करता है।

आपको इन्हें निम्नानुसार सेट करना होगा my.cnf( mysqldपुनरारंभ होने के बाद प्रभावी होता है):

[mysqld]
interactive_timeout=180
wait_timeout=180

यदि आप mysql को पुनरारंभ नहीं करना चाहते हैं, तो इन दो आदेशों को चलाएं:

SET GLOBAL interactive_timeout = 180;
SET GLOBAL wait_timeout = 180;

यह पहले से खुले कनेक्शन को बंद नहीं करेगा। इससे 180 सेकंड में नए कनेक्शन बंद हो जाएंगे।


इसलिए /etc/my.cnf में मैं बस डालूंगा wait_timeout=180?
पैट्रिक

@ पैट्रिक हां, लेकिन आपको इंटरएक्टिव_टाइम और वेट_टाइमआउट दोनों को 180 पर सेट करना होगा। मैंने आपकी प्रतिक्रिया के लिए अपना जवाब अपडेट कर दिया।
रोलैंडम्यूसीडीडीबीए

इस फ़ाइल में कहीं और हो सकता है dev.mysql.com/doc/refman/5.1/en/option-files.html और इन विकल्पों explicited नहीं किया जा सकता (उन्हें अपने द्वारा लिखना)
nicolallias
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.