Ada kemungkinan alasan lain untuk kesalahan ini, dan itu adalah kumpulan koneksi ActiveRecord penuai . Saat diaktifkan, penuai memindai kumpulan koneksi untuk koneksi "mati" dan menutupnya. Dalam pengujian saya, tampaknya terlalu bersemangat dan menutup koneksi yang hidup dengan sempurna juga (umumnya yang menjalankan kueri yang sedikit lebih besar).
Coba hapus reaping_frequency
dari konfigurasi DB Anda (yang mematikannya) dan lihat apakah itu membantu. Pindai basis kode Anda untuk string itu, dan pastikan itu tidak disetel (atau dihapus saja!). Jika Anda melihat baris seperti config['reaping_frequency'] = ENV['DB_REAP_FREQ'] || 10
, ketahuilah bahwa || 10
sebenarnya menetapkan default rendah 10s. Pola ini berada di basis kode Rails untuk sementara waktu, hingga perubahan dikembalikan
karena menyebabkan berbagai masalah, termasuk membunuh kueri yang berjalan lama
, tetapi masih direkomendasikan oleh Heroku
.
Jika menonaktifkan penuai memperbaiki banyak hal, saya akan merekomendasikan membiarkannya dinonaktifkan. Rails tidak lagi menyetelnya secara default, dan tampaknya menyebabkan lebih banyak masalah daripada penyelesaiannya.
Saya memiliki kesalahan seperti kesalahan Anda, dan begitulah cara saya memperbaikinya. Secara pribadi, saya tetap menonaktifkannya. Saya menulis tentang masalah khusus saya secara lebih rinci di blog .