Hay otra posible razón para este error, y es el conjunto de conexiones de ActiveRecord segador . Cuando está habilitado, el segador escanea el grupo de conexiones en busca de conexiones "muertas" y las cierra. En mis pruebas, parece ser demasiado entusiasta y también cierra conexiones perfectamente activas (generalmente las que ejecutan consultas un poco más grandes).
Intenta borrar reaping_frequency
desde su configuración de base de datos (que lo apaga) y vea si eso ayuda. Escanee su base de código en busca de esa cadena y asegúrese de que no esté configurada (¡o simplemente eliminada!). Si ve una línea como config['reaping_frequency'] = ENV['DB_REAP_FREQ'] || 10
, sepa que el || 10
en realidad está configurando un valor predeterminado bajo de 10 segundos. Este patrón estuvo en el código base de Rails durante un tiempo, hasta que el cambio fue revertido
debido a que causa varios problemas, incluido matar consultas de ejecución prolongada
, pero sigue siendo recomendado por Heroku
.
Si deshabilitar el segador arregla las cosas, recomendaría dejarlo deshabilitado. Rails ya no lo establece de forma predeterminada y parece causar más problemas de los que resuelve.
Tuve un error como el tuyo, y así fue como lo solucioné. Personalmente, lo mantengo deshabilitado. Escribí sobre mi problema específico con más detalle en mi blog .