There are a limited number of connections available for accessing the database. This is intentional. It prevents the database from being swamped by connections.
The limit may be large or small depending on the scale of the database server and the software it is using.
Requesting a connection from the DbPool object consumes one of the available connections. You must ensure that you release them back to the pool when you are finished, otherwise your server will soon use them all up and will be unable to form new connections to the database.