Istnieje inna potencjalna przyczyna tego błędu, a mianowicie pula połączeń ActiveRecord żniwiarz . Po włączeniu żniwiarz skanuje pulę połączeń w poszukiwaniu „martwych” połączeń i zamyka je. W moich testach wydaje się być nadgorliwy i zamyka również idealnie żywe połączenia (generalnie te, które uruchamiają nieco większe zapytania).
Spróbuj wyczyścić reaping_frequency
z twojej konfiguracji DB (która ją wyłącza) i sprawdź, czy to pomaga. Przeskanuj bazę kodu w poszukiwaniu tego ciągu i upewnij się, że nie jest on ustawiony (lub po prostu usunięty!). Jeśli zobaczysz linię taką jak config['reaping_frequency'] = ENV['DB_REAP_FREQ'] || 10
, wiedz, że || 10
w rzeczywistości ustawia niską wartość domyślną wynoszącą 10s. Ten wzorzec był w bazie kodu rails przez pewien czas, dopóki zmiana nie została cofnięta
ponieważ powoduje różne problemy, w tym zabijanie długich zapytań
, ale nadal jest zalecany przez Heroku
.
Jeśli wyłączenie żniwiarki naprawi problem, zalecam pozostawienie go wyłączonego. Railsy nie ustawiają go już domyślnie i wydaje się, że powoduje więcej problemów niż rozwiązuje.
Wystąpił błąd podobny do Twojego i tak go naprawiłem. Osobiście wyłączam to. O moim konkretnym problemie napisałem bardziej szczegółowo na moim blogu .