Предотвращение Mongrel / Mysql Errno :: EPIPE исключения - PullRequest
0 голосов
/ 25 сентября 2008

У меня есть приложение rails, которое я использую XML нечасто. Это работает с Mongrel и MySQL. Я обнаружил, что если я не использую приложение дольше нескольких часов, оно перестает работать и начинает выдавать ошибки Errno :: EPIPE. Похоже, что для mysql-соединения тайм-аут из-за отсутствия активности или чего-то в этом роде.

Его можно перезапустить с помощью 'mongrel_rails restart -P /path/to/the/mongrel.pid' ... но это не совсем решение. Мой сотрудник ожидает, что приложение будет там, когда он работает со своей стороны (а я, скорее всего, не рядом).

Мой вопрос:

  • Что я могу сделать, чтобы эта проблема не возникла в первую очередь? (например, не отрывайся от меня !!).
  • Если это не так, есть ли какой-нибудь код, который я могу вставить куда-нибудь, чтобы автоматически переделать соединение Db?

Ответы [ 2 ]

1 голос
/ 25 сентября 2008

Вот решение:

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

Тайм-ауты для вышеуказанного решения кажутся мне немного высокими. Вы не хотите, чтобы таймауты вашей БД были слишком малы из-за объема памяти, который может использовать соединение. Если соединение потеряно, вы хотите, чтобы время ожидания истекло (например, не за одну неделю)

0 голосов
/ 27 сентября 2008

В других местах я также получил следующие предложения:

  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".
    
...