Do rastreamento de pilha que você forneceu, posso tirar uma única conclusão:você está simplesmente ficando sem conexões.
Isso pode ser causado por transações de longa execução, possivelmente devido a consultas lentas ou limites de transação de aplicativo impróprios.
Sugiro que você comece a usar o FlexyPool , que oferece suporte ao Tomcat DBCP e obtém uma melhor compreensão do uso da conexão e da transação. O FlexyPool fornece muitos histogramas você pode estar interessado, como tempo de aquisição de conexão e tempo de concessão.
E, apenas para garantir, verifique a versão do driver MySQL também e veja se você está executando em uma biblioteca desatualizada.