156

Postgresql バックエンドを使用して Heroku でアプリを開発しています。CLI とサーバー上のページのロードの両方からデータベースにアクセスしようとすると、定期的に次のエラー メッセージが表示されます。

psql: FATAL: remaining connection slots are reserved for non-replication superuser connections

誰かがこれを前に見たことがありますか、それとも私を正しい方向に向けるのを手伝ってください?

4

7 に答える 7

82

max_connections構成設定を増やすか、(おそらくより良い)接続プールを使用して、より小さな接続プールを介して多数のユーザー要求をルーティングする必要があります。

https://wiki.postgresql.org/wiki/Number_Of_Database_Connections

于 2012-08-07T14:58:34.870 に答える
6

私は実際に、次を使用してdjango側で接続プールを実装しようとしました:

https://github.com/gmcguire/django-db-pool

しかし、利用可能な接続数を標準の開発 DB クォータである 20 のオープン接続未満に減らしたにもかかわらず、このエラーが引き続き発生しました。

postgresql データベースを Amazon RDS の無料/安価な層に移動する方法についての記事がここにあります。これにより、max_connectionsより高い設定が可能になります。これにより、PGBouncer を使用してデータベース レベルで接続をプールすることもできます。

https://www.lewagon.com/blog/how-to-migrate-heroku-postgres-database-to-amazon-rds

アップデート:

Heroku は私のオープン チケットに応答し、私のデータベースがネットワーク内で不適切に負荷分散されていると述べました。彼らは、システムを改善することで、将来同様の問題が発生しないようにする必要があると述べました。それにもかかわらず、サポートは私のデータベースを手動で再配置し、パフォーマンスは著しく改善されました.

于 2013-01-17T05:22:32.490 に答える
0

Linux で同じ問題を再現するには:

for i in {1..300}; do
     PGPASSWORD=MY_PASSWORD gnome-terminal -e  $'/usr/bin/psql -h \'127.0.0.1\' -p 5432 -U MY_USERNAME' 
done

dotnet クライアントでは、以下を読み取ることができます。

  System.InvalidOperationException: An exception has been raised that is likely due to a transient failure.
   ---> Npgsql.PostgresException (0x80004005): 53300: sorry, too many clients already
于 2021-05-13T15:52:06.643 に答える