Je développe une application sur Heroku avec un backend Postgresql. Périodiquement, je reçois ce message d'erreur en essayant d'accéder à la base de données, à la fois à partir de la CLI et du chargement d'une page sur le serveur:
psql: FATAL: remaining connection slots are reserved for non-replication superuser connections
Quelqu'un a-t-il déjà vu cela ou aidez-moi s'il vous plaît à m'orienter dans la bonne direction?
postgresql
heroku
nathancahill
la source
la source
heroku pgbackups
commande pour créer une sauvegarde malgré cette erreur..bat
script dans Windows pour cela:for /l %%x in (1, 1, 100) do ( start psql )
où 100 est le nombre souhaité de backends.pg:backups copy
,pg:backups capture
en s'y connectant à partirpgAdmin
de mon ordinateur, ou de toute autre manière que je pouvais imaginer. Mêmepg:killall
n'a pas aidé. Une heure plus tard, j'ai réessayé et les connexions étaient 50-50, donc après quelques tentatives, j'ai eu un succèspg:backups copy
et mon application est de retour dans l'air. Ce n'était ... pas une journée amusante. Si vous avez recherché ceci sur Google, buvez une tasse d'eau.Réponses:
Vous devez soit augmenter le
max_connections
paramètre de configuration, soit (probablement mieux) utiliser le pool de connexions pour acheminer un grand nombre de demandes utilisateur via un pool de connexions plus petit.https://wiki.postgresql.org/wiki/Number_Of_Database_Connections
la source
pid
valeurs des sessions et utiliser lapg_terminate_backend()
fonction pour les supprimer. Pour éviter le problème, assurez-vous de fermer correctement les connexions plutôt que de tuer brusquement le côté client.heroku pg:killall
Cette exception s'est produite lorsque j'ai oublié de fermer les connexions
la source
Voir Heroku «psql: FATAL: les emplacements de connexion restants sont réservés aux connexions de super-utilisateur sans réplication» :
Heroku a parfois un problème avec l'équilibrage de la charge de la base de données.
André Laszlo
,markshiz
et moi avons tous déclaré avoir traité de cela dans les commentaires sur la question.Pour vous éviter l'appel au support, voici la réponse que j'ai reçue du support Heroku pour un problème similaire:
la source
J'ai en fait essayé d'implémenter le regroupement de connexions à la fin de django en utilisant:
https://github.com/gmcguire/django-db-pool
mais j'ai toujours reçu cette erreur, malgré la réduction du nombre de connexions disponibles en dessous du quota de base de données de développement standard de 20 connexions ouvertes.
Il y a un article ici sur la façon de déplacer votre base de données postgresql vers le niveau gratuit / bon marché d'Amazon RDS. Cela vous permettrait de définir
max_connections
plus haut. Cela vous permettra également de regrouper les connexions au niveau de la base de données en utilisant PGBouncer.https://www.lewagon.com/blog/how-to-migrate-heroku-postgres-database-to-amazon-rds
METTRE À JOUR:
Heroku a répondu à mon ticket ouvert et a déclaré que ma base de données était mal équilibrée dans leur réseau. Ils ont déclaré que les améliorations apportées à leur système devraient éviter des problèmes similaires à l'avenir. Néanmoins, le support a déplacé manuellement ma base de données et les performances sont sensiblement améliorées.
la source
Redémarrez votre base de données postgres en suivant la commande:
la source