سؤال

لدي تطبيق Rails وأقدمه لملفات XML بشكل غير متكرر.يتم تشغيل هذا مع الهجين و mysql.لقد وجدت أنه إذا لم أستخدم التطبيق لمدة تزيد عن بضع ساعات فإنه يتوقف عن العمل ويبدأ في ظهور أخطاء Errno::EPIPE.يبدو أن مهلة اتصال MySQL قد انتهت بسبب عدم النشاط أو شيء من هذا القبيل.

يمكن إعادة تشغيله باستخدام 'mongrel_rails Restart -P /path/to/the/mongrel.pid'...لكن هذا ليس حلاً حقًا.يتوقع المتعاون معي أن يكون التطبيق موجودًا عندما يعمل من جانبه (وأنا على الأرجح لست موجودًا).

سؤالي هو:

  • ما الذي يمكنني فعله لمنع حدوث هذه المشكلة في المقام الأول؟(على سبيل المثاللا تتأخر عني !!).
  • في حالة فشل ذلك، هل هناك بعض التعليمات البرمجية التي يمكنني إدراجها في مكان ما لإعادة إنشاء اتصال Db تلقائيًا؟
هل كانت مفيدة؟

المحلول

وهنا الحل:

https://boxpanel.blueboxgrp.com/public/the_vault/index.php/Mongrel_/_MySQL_Timeout

تبدو المهلات في الحل أعلاه عالية بعض الشيء بالنسبة لي.لا تريد أن تكون مهلة قاعدة البيانات الخاصة بك منخفضة جدًا، نظرًا لحجم الذاكرة التي يمكن أن يستخدمها الاتصال.إذا أصبح الاتصال معزولًا، فأنت تريد أن تنتهي مهلة الاتصال بشكل معقول (ليس خلال أسبوع واحد على سبيل المثال).

نصائح أخرى

وفي أماكن أخرى، تلقيت أيضًا الاقتراحات التالية:

  1. حاول الإعدادconfig.active_record.verification_timeout إلى شيء أقل من أي شيء هو إعداد مهلة اتصال MySQL.

  2. هناك جوهرة للتغلب على هذه المشكلة: mysql_retry_lost_connection

     http://rubyforge.org/projects/zventstools/
     "Reconnect to the MySQL server when you hit a lost connection error".
    
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top