سؤال

أنا باستخدام أبراج (الثعبان الإطار) خدمة تطبيق ويب بسيط ، ولكن يبدو أن يموت من وقت لآخر ، مع هذا في سجل الخطأ: (2006, 'MySQL server has gone away')

فعلت قليلا من التدقيق ، ورأى أن هذا كان بسبب اتصالات الخلية لم يتم تجديدها.هذا لا ينبغي أن يكون مشكلة لان sqlalchemy.pool_recycle في ملف التكوين تلقائيا يبقيه على قيد الحياة.الافتراضي 3600, لكن أنا طلبه مرة أخرى إلى 1800 بسبب هذه المشكلة.ساعدت قليلا, ولكن 3600 يجب أن يكون على ما يرام وفقا مستندات.الأخطاء لا يزال يحدث شبه بانتظام.أنا لا أريد أن أقل من ذلك كثيرا على الرغم من دوس قاعدة البيانات الخاصة بي :).

ربما شيء في الخلية التكوين هو الأحمق ؟ غير متأكد من أن ننظر فيها بالضبط.

التفاصيل الأخرى ذات الصلة:

  Python 2.5
  Pylons: 0.9.6.2 (w/ sql_alchemy)
  MySQL: 5.0.51
هل كانت مفيدة؟

المحلول

أعتقد أنها ثابتة.إنه اتضح لدي بسيطة التكوين خطأ.بلدي ini قراءة:

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

المشكلة هي أن بلدي environment.py الملف أعلن أن المحرك فقط خريطة مفاتيح مع البادئة: sqlalchemy.default لذلك pool_recycle تم تجاهلها.

الحل هو ببساطة تغيير السطر الثاني في ini:

sqlalchemy.default.pool_recycle = 1800

نصائح أخرى

قد ترغب في التحقق الخلية زمن المتغيرات:

show variables like '%timeout%';

ربما كنت ترغب في wait_timeout (أقل احتمالا ولكن ممكن: interactive_timeout).على Debian و Ubuntu ، افتراضيات 28800 (الخلية يقتل اتصالات بعد 8 ساعات) لكن ربما الافتراضي الخاص بك منصة مختلفة أو من تدير الملقم تكوين الأشياء بشكل مختلف.

AFAICT, pool_recycle لا تبقى في الواقع الاتصالات على قيد الحياة تنتهي بها من تلقاء نفسها قبل الخلية يقتل منهم.أنا لم تكن مألوفة مع أبراج ، ولكن إذا تسبب الاتصالات بشكل متقطع تفعل SELECT 1; هو خيار من شأنها أن تبقيهم على قيد الحياة في تكلفة الأساس لا server تحميل الحد الأدنى من حركة مرور الشبكة.خاطرة أخيرة:هل أنت بطريقة ما تمكنت من استخدام اتصال أبراج يعتقد أنها انتهت ؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top