Start here. This is the direct spoken answer to practice first.
Overview
Connects pool limits to process topology, transaction duration, database capacity, and queueing evidence.
I start from the database's safe connection budget, subtract administration and other workloads, then divide the remainder across application replicas and worker processes. Each process normally has its own pool, so pool_size and max_overflow multiply with deployment scale. A pool should be large enough for measured concurrent database work, not equal to request concurrency. Extra callers should wait for bounded capacity instead of opening unlimited connections.