PostgreSQL doesn't contain integrated pooler - so any connection to Postgres enforces one PostgreSQL proces. A performance benchmarks is showing maximum performance about 10x cores. With high number of connections you have to use low size of work_mem, what enforces can have negative impact on performance too. Too high number of active PostgreSQL processes increase a risk of performance problems with spin locks, etc.
:-O I wasn't absolutely aware of this thing... is there a way to monitor active connections, or at least to report when they grow too much? (say, I have an 8-core system and want to track down if, and when, active connections grow over 80)
100 connections are probably ok, 200 is over the optimum - there is some tolerance.
We are speaking about optimum - I had possibility to work with system where max connections was 300, 600 - and it was working. But then the max_connection doesn't work as safeguard against overloading. And the system under higher load can be pretty slow.