Frage

Ich habe eine Rails-Anwendung, die ich XML auf einer seltenen Basis serviert haben. Dies wird mit Mischlings und MySQL laufen. Ich habe festgestellt, dass, wenn ich die App länger nicht trainieren als ein paar Stunden tot es geht und beginnt Errno werfen :: EPIPE Fehler. Es scheint, dass die MySQL-Verbindung für Inaktivität oder so ähnlich abgelaufen erhalten.

Es kann mit ‚mongrel_rails neu starten -P /path/to/the/mongrel.pid‘ neu gestartet werden ... aber das ist nicht wirklich eine Lösung. Meine Mitarbeiter erwartet, dass der App dabei zu sein, wenn er seinerseits arbeitet (und ich bin wahrscheinlich nicht um).

Meine Frage ist:

  • Was kann ich tun, um dieses Problem zu verhindern, dass in dem 1. Platz auftreten? (Zum Beispiel mir nicht Timeout !!).
  • Gelingt das nicht, gibt es einige Codes, den ich irgendwo einfügen kann, um automatisch die Db Verbindung Remake?
War es hilfreich?

Lösung

Hier ist eine Lösung:

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

Die Timeouts auf der obigen Lösung scheint ein wenig zu mir hoch. Sie wollen nicht Ihre DB-Timeouts zu niedrig sein, wegen der Größe des Speichers eine Verbindung nutzen können. Wenn eine Verbindung verwaist ist, wollen Sie es vernünftig Zeit aus (wie nicht in einer Woche.)

Andere Tipps

An anderen Orten, ich habe auch folgende Vorschläge:

  1. Versuchen Sie, config.active_record.verification_timeout , um etwas niedriger als was auch immer Ihre MySQL-Verbindung Timeout-Einstellung ist.

  2. Es ist ein Juwel, um dieses Problem zu umgehen: mysql_retry_lost_connection

     http://rubyforge.org/projects/zventstools/
     "Reconnect to the MySQL server when you hit a lost connection error".
    
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top