For where you are measuring, everything looks normal to me.
Your application will make connections to the pooler as needed, and the pooler will assign the application connection to a database connection it has available in it's pool. This gets rid of the overhead of creating a brand new connection to the DB right from the application for a small query, as connecting to the pooler is much less overhead.
The pooler should eventually get to the maximum number of allowed connections. That is just how it's supposed to work. It is not supposed to any connections after your application doesn't need the them any more. It just keeps it open, and adds it to the available pool for your application to use.