TIME_WAIT existe por um motivo e a razão é que os pacotes TCP podem ser atrasados e chegar fora de ordem. Mexer com ele causará conexões quebradas extras quando elas tiverem sucesso. Há uma explicação excelente de tudo isso aqui .
Seu problema é que você não está reutilizando suas conexões do MySQL dentro do seu aplicativo, mas em vez disso está criando uma nova conexão toda vez que deseja executar uma consulta SQL. Isso envolve não apenas a configuração de uma conexão TCP, mas também a passagem de credenciais de autenticação. E isso está acontecendo para todas as consultas (ou pelo menos para todas as solicitações da Web de front-end) e é um desperdício e consome tempo.
Se você não sabe como habilitar o pooling de conexões do MySQL persistente em qualquer idioma que esteja usando, o StackOverflow seria um bom lugar para perguntar.