Domanda

Ho un'app di rotaie che offro XML su una base rara. Questo viene eseguito con ibrido e mysql. Ho scoperto che se non esercito l'app per più di qualche ora, si spegne e inizia a generare errori Errno :: EPIPE. Sembra che la connessione mysql sia scaduta per inattività o qualcosa del genere.

Può essere riavviato con 'mongrel_rails restart -P /path/to/the/mongrel.pid' ... ma non è proprio una soluzione. Il mio collaboratore si aspetta che l'app sia lì quando sta lavorando da parte sua (e molto probabilmente non ci sono).

La mia domanda è:

  • Cosa posso fare per evitare che questo problema si verifichi in primo luogo? (ad esempio, non prendermi in giro !!).
  • In caso contrario, c'è del codice che posso inserire da qualche parte per rifare automaticamente la connessione Db?
È stato utile?

Soluzione

Ecco una soluzione:

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

I timeout sulla soluzione sopra sembrano un po 'alti per me. Non si desidera che i timeout del DB siano troppo bassi, a causa della quantità di memoria che una connessione può utilizzare. Se una connessione è orfana, si desidera che scada in modo ragionevole (come non tra una settimana.)

Altri suggerimenti

In altri posti, ho anche ricevuto i seguenti suggerimenti:

  1. Prova a impostare config.active_record.verification_timeout su qualcosa di più basso di qualunque cosa l'impostazione di timeout della connessione mysql è.

  2. C'è un gioiello per aggirare questo problema: mysql_retry_lost_connection

     http://rubyforge.org/projects/zventstools/
     "Reconnect to the MySQL server when you hit a lost connection error".
    
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top