You have hit on a performance anti-pattern. Throwing more threads at an an application does not necessarily mean that it will perform better. Eventually, the contention for common resources will work against you. For every application there is a sweet-spot for the optimal number of threads it can handle (and that includes the optimal number of database connections). One of the purposes of performance tuning is to find that sweet spot. From what you wrote, I suspect that somewhere around 350 connections is the sweet-spot for your app.