Most likely, the DB is accessed by other applications. The 100 limit is for the entire database. Even if you set a max size of 20, maybe there are not enough connections available at the DB level. That's also why you can't reproduce it in your local environment.

For example, assume you want to deploy 10 nodes of this application and all could create 20 connections. However, the 100 limit will prevent them to do so.

So, to know what should be the right pool size for all your applications, just use FlexyPool.