Postgresql – What limits the number of connections

linuxmax-connectionspostgresqlunix

As per https://devcenter.heroku.com/articles/heroku-postgres-legacy-plans the connection limit is 500

As per https://wiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Server "Generally, PostgreSQL on good hardware can support a few hundred connections"

What are the determining factors in this limit? #CPU cores? RAM? OS?

Best Answer

First of all, the GUC max_connections - a setting in postgresql.conf. It can only be set at server start.

Heroku obviously limits this to 20 for the "Starter Tier" and 500 for the "Production Tier".

The maximum number is not limited by Postgres itself, but by available system resources. Typically, performance degrades with too many concurrent connections, so even if you can set max_connections = 1000, it's probably unwise. Idle sessions don't matter much. But concurrently active sessions compete for resources, the bottleneck typically being I/O.

Here is a blog with instructions by someone who did.