Ho sito in esecuzione l'applicazione rotaie e lavoratori Resque in esecuzione in modalità di produzione, su Ubuntu 9.10, Rails 2.3.4, ruby-ee 2010.01, PostgreSQL 8.4.2lavoratori Rails Resque falliscono con PGError: server ha chiuso la connessione inaspettatamente
I worker hanno costantemente generato errori: PGError: il server ha chiuso la connessione in modo imprevisto.
La mia ipotesi migliore è che il processo di resque master stabilisca la connessione a db (ad es. Authlogic lo fa quando si usa User.acts_as_authentic), mentre carica le classi di app delle rotaie e quella connessione diventa danneggiata nel processo di fork() ed (all'uscita?) , quindi i bambini biforcuti diventano di tipo ActiveRecord globale rotto :: Base.connection
Potrei riprodurre un comportamento molto simile con questo sample code che imita fork/processing in resque worker. (AFAIK, gli utenti di libpq consigliano di ricreare le connessioni in processo biforcato comunque, altrimenti non è sicuro)
Ma, la cosa strana è che quando uso pgbouncer o pgpool-II invece di collegamento diretto pgsql, tali errori non compaiono .
Quindi, la domanda è dove e come dovrei scavare per scoprire perché è rotto per connessione semplice e funziona con i pool di connessione? O soluzione ragionevole?
Grazie, quindi ho semplicemente aggiunto hook: Resque.after_fork = Proc.new {ActiveRecord :: Base.establish_connection} –
Potrei trovarmi di fronte a un problema simile. Puoi dirmi come e dove hai aggiunto il "gancio"? –
link in basso è rotto – botbot