पिलोन त्रुटि - 'MySQL सर्वर चला गया है'

[I hope this isn't too obscure… I'll ask the newsgroup if nobody knows here]

I'm using Pylons (a python framework) to serve a simple web application, but it seems to die from time to time, with this in the error log: (2006, 'MySQL server has gone away')

मैंने कुछ जांच की, और देखा कि ऐसा इसलिए था क्योंकि MySQL के कनेक्शन नवीनीकृत नहीं किए जा रहे थे। हालांकि यह कोई समस्या नहीं होनी चाहिए, क्योंकि कॉन्फ़िगरेशन फ़ाइल में sqlalchemy.pool_recycle को स्वचालित रूप से जीवंत रखना चाहिए। डिफ़ॉल्ट 3600 था, लेकिन इस समस्या के कारण मैंने इसे वापस 1800 पर डायल किया। इससे थोड़ी मदद मिली, लेकिन दस्तावेज़ों के अनुसार 3600 चाहिए ठीक होना चाहिए। त्रुटियां अभी भी अर्ध-नियमित होती हैं। मैं इसे बहुत कम नहीं करना चाहता हूं और डॉस मेरा खुद का डेटाबेस :)।

शायद मेरी MySQL कॉन्फ़िगरेशन में कुछ मूर्खतापूर्ण है? निश्चित नहीं है कि बिल्कुल कहां देखना है।

अन्य प्रासंगिक विवरण:

  Python 2.5
  Pylons: 0.9.6.2 (w/ sql_alchemy)
  MySQL: 5.0.51
0
ro fr bn
मुझे यह त्रुटि मिली है जब मैंने लिखा एक स्क्रिप्ट AWOL चला गया और एक साथ तालिका में 10000 पंक्तियां डालीं। मुझे एक असफलता की तरह समझा - यकीन नहीं है कि यह आपकी समस्या से संबंधित है ...
जोड़ा लेखक Andrew G. Johnson, स्रोत

2 उत्तर

मुझे लगता है कि मैंने इसे ठीक किया है। यह पता चला है कि मेरे पास एक सरल विन्यास त्रुटि थी। मेरी आईएनआई फ़ाइल पढ़ी:

sqlalchemy.default.url = [connection string here]
sqlalchemy.pool_recycle = 1800

समस्या यह है कि मेरी environment.py फ़ाइल ने घोषित किया कि इंजन केवल उपसर्ग के साथ कुंजी को मैप करेगा: sqlalchemy.default इसलिए pool_recycle को अनदेखा कर दिया गया था।

समाधान केवल आईएनआई में दूसरी पंक्ति को बदलने के लिए है:

sqlalchemy.default.pool_recycle = 1800
0
जोड़ा
हाल ही में इस पोस्ट पर कुछ यातायात देखा। यह ध्यान दिया जाना चाहिए कि यह मुद्दा पिलोन 0.9.6 से संबंधित था। इसे पिलोन 0.9.7 में ख्याल रखा जाना चाहिए, और 'sqlalchemy.default' संपत्ति सिर्फ सादा 'sqlalchemy' के पक्ष में दूर हो जाती है
जोड़ा लेखक swilliams, स्रोत

आप MySQL के टाइमआउट चरों को देखना चाहेंगे:

show variables like '%timeout%';

आप शायद wait_timeout में रुचि रखते हैं (कम संभावना लेकिन संभव: interactive_timeout )। डेबियन और उबंटू पर, डिफ़ॉल्ट 28800 (MySQL 8 घंटे के बाद कनेक्शन को मारता है), लेकिन हो सकता है कि आपके प्लेटफ़ॉर्म के लिए डिफ़ॉल्ट अलग हो या जो भी सर्वर को प्रशासित करता है, वह चीजों को अलग-अलग कॉन्फ़िगर कर देता है।

AFAICT, pool_recycle वास्तव में कनेक्शन को जीवित नहीं रखता है, यह उन्हें MySQL को मारने से पहले ही समाप्त हो जाता है। मैं पिलों से परिचित नहीं हूं, लेकिन कनेक्शन को अंतःस्थापित करने के लिए कनेक्शन <�कोड> चयन 1; एक विकल्प है, जो मूल रूप से कोई सर्वर लोड और न्यूनतम नेटवर्क यातायात की लागत पर उन्हें जीवित रखेगा। एक अंतिम विचार: क्या आप किसी ऐसे कनेक्शन का उपयोग करने के लिए प्रबंधन कर रहे हैं जो पिलोन सोचता है कि यह समाप्त हो गया है?

0
जोड़ा
मैं निश्चित रूप से नहीं कह सकता; मैं अभी तक पर्याप्त रूप से पर्याप्त Pylons के आंतरिक पता नहीं है। मुझे अभी तक दस्तावेज के माध्यम से पोक करने का मौका नहीं मिला है (व्यस्त व्यस्त)। मुझे लगता है कि चयन 1 नहीं; चीज एक विकल्प है हालांकि, लगता है कि भी तरह का kludgey :)।
जोड़ा लेखक swilliams, स्रोत