Ich entwickle eine App auf Heroku mit einem Postgresql-Backend. In regelmäßigen Abständen wird diese Fehlermeldung angezeigt, wenn ich versuche, auf die Datenbank zuzugreifen, sowohl über die CLI als auch beim Laden einer Seite auf den Server:
psql: FATAL: remaining connection slots are reserved for non-replication superuser connections
Hat jemand das schon einmal gesehen oder bitte helfen Sie mir, in die richtige Richtung zu weisen?
postgresql
heroku
Nathancahill
quelle
quelle
heroku pgbackups
Trotz dieses Fehlers konnte ich mit dem Befehl ein Backup erstellen..bat
Skript in Windows dafür:for /l %%x in (1, 1, 100) do ( start psql )
wobei 100 die gewünschte Anzahl von Backends ist.pg:backups copy
,pg:backups capture
durch von ihm verbindetpgAdmin
auf meinem eigenen Computer oder irgendeine andere Art und Weise ich mir vorstellen konnte. Auchpg:killall
hat nicht geholfen. Eine Stunde später versuchte ich es erneut und die Verbindungen waren 50-50. Nach einigen Versuchen hatte ich einen Erfolgpg:backups copy
und meine App ist wieder in der Luft. Dies war ... kein lustiger Tag. Wenn Sie dies gegoogelt haben, trinken Sie eine Tasse Wasser.Antworten:
Sie müssen entweder die
max_connections
Konfigurationseinstellung erhöhen oder (wahrscheinlich besser) das Verbindungspooling verwenden , um eine große Anzahl von Benutzeranforderungen über einen kleineren Verbindungspool weiterzuleiten.https://wiki.postgresql.org/wiki/Number_Of_Database_Connections
quelle
pid
Werte für die Sitzungen identifizieren und diepg_terminate_backend()
Funktion verwenden, um sie zu beenden. Um das Problem zu vermeiden, stellen Sie sicher, dass die Verbindungen ordnungsgemäß geschlossen werden, anstatt die Clientseite abrupt zu beenden.heroku pg:killall
Diese Ausnahme trat auf, als ich vergaß, die Verbindungen zu schließen
quelle
Siehe Heroku „psql: FATAL: Die verbleibenden Verbindungssteckplätze sind für Superuser-Verbindungen ohne Replikation reserviert“ :
Heroku hat manchmal ein Problem mit dem Lastausgleich der Datenbank.
André Laszlo
,markshiz
Und ich alle berichten in den Kommentaren zu der Frage mit dem Umgang.Um Ihnen den Support-Anruf zu ersparen, habe ich vom Heroku-Support eine Antwort auf ein ähnliches Problem erhalten:
quelle
Ich habe tatsächlich versucht, das Verbindungspooling auf der Django-Seite zu implementieren, indem ich:
https://github.com/gmcguire/django-db-pool
Ich habe diesen Fehler dennoch erhalten, obwohl die Anzahl der verfügbaren Verbindungen unter das Standard-Entwicklungs-DB-Kontingent von 20 offenen Verbindungen gesenkt wurde.
Hier finden Sie einen Artikel darüber, wie Sie Ihre Postgresql-Datenbank auf die kostenlose / günstige Stufe von Amazon RDS verschieben können. Dies würde es Ihnen ermöglichen,
max_connections
höher einzustellen . Auf diese Weise können Sie auch Verbindungen auf Datenbankebene mit PGBouncer bündeln.https://www.lewagon.com/blog/how-to-migrate-heroku-postgres-database-to-amazon-rds
AKTUALISIEREN:
Heroku antwortete auf mein offenes Ticket und gab an, dass meine Datenbank in ihrem Netzwerk nicht ordnungsgemäß ausgeglichen war. Sie sagten, dass Verbesserungen an ihrem System ähnliche Probleme in Zukunft verhindern sollten. Trotzdem hat der Support meine Datenbank manuell verschoben und die Leistung wird spürbar verbessert.
quelle
Starten Sie Ihre Postgres-Datenbank mit dem folgenden Befehl neu:
quelle