Estoy desarrollando una aplicación en Heroku con un backend de Postgresql. Periódicamente, recibo este mensaje de error cuando intento acceder a la base de datos, tanto desde la CLI como al cargar una página en el servidor:
psql: FATAL: remaining connection slots are reserved for non-replication superuser connections
¿Alguien ha visto esto antes o, por favor, ayúdeme a indicarme la dirección correcta?
postgresql
heroku
Nathancahill
fuente
fuente
heroku pgbackups
comando para crear una copia de seguridad a pesar de este error..bat
script en Windows para esto:for /l %%x in (1, 1, 100) do ( start psql )
donde 100 es el número deseado de backends.pg:backups copy
,pg:backups capture
conectándome a ella desdepgAdmin
mi propia computadora, o de cualquier otra forma que pudiera imaginar. Inclusopg:killall
no ayudó. Una hora más tarde, lo intenté de nuevo y las conexiones eran 50-50, así que después de algunos intentos tuve un éxitopg:backups copy
y mi aplicación volvió a estar en el aire. Este ... no fue un día divertido. Si buscaste esto en Google, bebe una taza de agua.Respuestas:
Necesita aumentar la
max_connections
configuración o (probablemente mejor) usar la agrupación de conexiones para enrutar una gran cantidad de solicitudes de usuario a través de una agrupación de conexiones más pequeña.https://wiki.postgresql.org/wiki/Number_Of_Database_Connections
fuente
pid
valores de las sesiones y usar lapg_terminate_backend()
función para eliminarlas. Para evitar el problema, asegúrese de cerrar las conexiones correctamente en lugar de eliminar abruptamente el lado del cliente.heroku pg:killall
Esta excepción ocurrió cuando olvidé cerrar las conexiones.
fuente
Consulte Heroku “psql: FATAL: las ranuras de conexión restantes están reservadas para conexiones de superusuario sin replicación” :
Heroku a veces tiene problemas con el equilibrio de carga de la base de datos.
André Laszlo
,markshiz
y yo todos informamos haber lidiado con eso en los comentarios sobre la pregunta.Para ahorrarle la llamada de soporte, aquí está la respuesta que recibí del Soporte de Heroku para un problema similar:
fuente
De hecho, intenté implementar la agrupación de conexiones en el extremo de django usando:
https://github.com/gmcguire/django-db-pool
pero todavía recibí este error, a pesar de reducir el número de conexiones disponibles por debajo de la cuota de DB de desarrollo estándar de 20 conexiones abiertas.
Aquí hay un artículo sobre cómo mover su base de datos postgresql al nivel gratuito / barato de Amazon RDS. Esto le permitiría establecer
max_connections
un valor más alto. Esto también le permitirá agrupar conexiones a nivel de base de datos usando PGBouncer.https://www.lewagon.com/blog/how-to-migrate-heroku-postgres-database-to-amazon-rds
ACTUALIZAR:
Heroku respondió a mi ticket abierto y dijo que mi base de datos estaba mal balanceada en su red. Dijeron que las mejoras en su sistema deberían evitar problemas similares en el futuro. No obstante, el soporte reubicó manualmente mi base de datos y el rendimiento ha mejorado notablemente.
fuente
Reinicie su base de datos de postgres con el siguiente comando:
fuente