Der er en anden potentiel årsag til denne fejl, og det er ActiveRecord-forbindelsespuljen høster . Når den er aktiveret, scanner reaperen forbindelsespuljen for "døde" forbindelser og lukker dem. I min test ser den ud til at være overivrig og lukker også perfekt levende forbindelser (generelt dem, der kører lidt større forespørgsler).
Prøv at rydde reaping_frequency
fra din DB-konfiguration (som slår den fra) og se om det hjælper. Scan din kodebase for den streng, og sørg for, at den er deaktiveret (eller blot fjernet!). Hvis du ser en linje som config['reaping_frequency'] = ENV['DB_REAP_FREQ'] || 10
, ved, at || 10
sætter faktisk en lav standard på 10s. Dette mønster var i rails-kodebasen i et stykke tid, indtil ændringen blev tilbageført
på grund af det forårsager forskellige problemer, herunder at dræbe langvarige forespørgsler
, men er stadig anbefalet af Heroku
.
Hvis deaktivering af reaperen løser tingene, vil jeg anbefale at lade den være deaktiveret. Rails indstiller det ikke længere som standard, og det ser ud til at forårsage flere problemer, end det løser.
Jeg havde en fejl som din, og det var sådan jeg fik rettet det. Personligt holder jeg det deaktiveret. Jeg skrev om mit specifikke problem mere detaljeret på min blog .