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

Viewed 288361

I'm developing an app on Heroku with a Postgresql backend. Periodically, I get this error message when trying to access the database, both from the CLI and from loading a page on the server:

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

Anyone seen this before or please help point me in the right direction?

7 Answers

To reproduce same issue in 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

In a dotnet client you can read:

  System.InvalidOperationException: An exception has been raised that is likely due to a transient failure.
   ---> Npgsql.PostgresException (0x80004005): 53300: sorry, too many clients already

I had a lot of idle connections in my case, so I had to reuse idle connections before creating new ones,

The error message means that the app has used up all available connections.

While using postgres in aws with knex and typescript to do some query and update job, the problem pops up when it finishes 390 database operations, for which a mistake prevents the normal knex.destroy() operation. The error message is:

(node:66236) UnhandledPromiseRejectionWarning: error: remaining connection slots are reserved for non-replication superuser connections

When knex.destroy() goes to the right place the error is gone.

Related