MySql Lost Connection Error in großen Rails Anwendungen
Seit kurzen beunruhigt uns die folgende Fehlermeldung: Mysql::Error: Lost connection to MySQL server during query. Sie tritt immer wieder sporadisch ohne erkennbare Ursache auf. Heute Nacht bin ich eher durch Zufall auf eine Erklärung und idealerweise auch auf eine Lösung des Problems gestoßen.
Kurz zusammengefasst: ActiveRecord verwendet pro Model eine Datenbankverbindung. Wenn die Datenbank unter Last steht, kann es passieren, dass die Verbindung nicht schnell genug bereitgestellt wird und der Lost-Connection-Fehler auftritt.
Über das setzen von ActiveRecord::Base.verification_timeout=14400 oder einen Wert niedriger als die MySql Server interactive_timeout -Einstellung in der environment.rb lässt sich der Timeout heraufsetzen. Um dem Problem nachhaltig zu begegnen, hat Tyler Kovacs von zvents das Pluginmysql_retry_lost_connection geschrieben, das versucht, die Verbindung erneut herzustellen, wenn es einen Timeout gab.
Tags: error, lost-connection, mysql, mysql_retry_lost_connection, plugin, rails





September 6th, 2008 at 4:57 pm
Hi,
dass habe ich gesucht aber wie und wo wird es eingebunden ?
Ich habe das File mysql_retry_lost_connection.rb aber wohin damit ?
September 6th, 2008 at 9:26 pm
in rails < 2 (oder 1.2?) kannst du es einfach in lib packen und in deiner environment.rb requiren (require ‘mysql_retry_lost_connection’), ab rails 2 einfach in config/initializers. dann wirds automatisch geladen.