Er is nog een mogelijke reden voor deze fout, en dat is de ActiveRecord-verbindingspool maaimachine . Indien ingeschakeld, scant de reaper de verbindingspool op "dode" verbindingen en sluit deze. Bij mijn testen lijkt het overijverig te zijn en sluit het ook perfect levende verbindingen (over het algemeen die met iets grotere zoekopdrachten).
Probeer reaping_frequency
te wissen uit uw DB-configuratie (waardoor het wordt uitgeschakeld) en kijk of dat helpt. Scan je codebase op die string en zorg ervoor dat deze niet is ingesteld (of gewoon is verwijderd!). Als u een regel ziet zoals config['reaping_frequency'] = ENV['DB_REAP_FREQ'] || 10
, weet dat de || 10
is eigenlijk het instellen van een lage standaardwaarde van 10s. Dit patroon zat een tijdje in de rails-codebase, totdat de wijziging teruggedraaid werd
omdat het verschillende problemen veroorzaakt, waaronder het doden van langlopende zoekopdrachten
, maar wordt nog steeds aanbevolen door Heroku
.
Als het uitschakelen van de reaper dingen oplost, raad ik aan om het uitgeschakeld te laten. Rails stelt het niet langer standaard in en het lijkt meer problemen te veroorzaken dan op te lossen.
Ik had een fout zoals die van jou, en zo heb ik het opgelost. Persoonlijk houd ik het uitgeschakeld. Ik schreef meer in detail over mijn specifieke probleem op mijn blog .